web-dev-qa-db-ja.com

UIDatePickerを特定の時間に変更する方法(コード内)

UIDatePickerを特定の動的に変更する必要があります。

日付ピッカーが時間モードのみに設定されています。私は時間を設定できます

timePicker.setDate(NSDate(), animated: false)

しかし、現在の時間ではなく別の時間に変更する方法を理解できません。

どうすれば変更できますか?

ありがとう

13
ilan

timeを変更する必要があります。NSDateComponentsを使用して変更し、変更日をDatePickerに設定できます。

var calendar:NSCalendar = NSCalendar.currentCalendar()
let components = calendar.components(NSCalendarUnit.HourCalendarUnit | NSCalendarUnit.MinuteCalendarUnit, fromDate: NSDate())
components.hour = 5
components.minute = 50
datePicker.setDate(calendar.dateFromComponents(components)!, animated: true)
17
arthankamal

Swift 3および4:

extension UIDatePicker {

   func setDate(from string: String, format: String, animated: Bool = true) {

      let formater = DateFormatter()

      formater.dateFormat = format

      let date = formater.date(from: string) ?? Date()

      setDate(date, animated: animated)
   }
}

使用法:

datePicker.setDate(from: "1/1/2000 10:10:00", format: "dd/MM/yyyy HH:mm:ss")
6
zombie

日付の選択(時間のみ)を「09:00」などの特定の時間に設定するには、NSDateComponentsとピッカーを次のように設定します。

let calendar = NSCalendar.currentCalendar()
let components = NSDateComponents()
components.hour = 9
components.minute = 0
timePicker.setDate(calendar.dateFromComponents(components)!, animated: true)
5
Kevin Horgan

次のように日付と時刻をフォーマットすることにより、カスタマイズできます。

let dateString = "12-11-2015 10:50:00"
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm:ss"
let date = dateFormatter.dateFromString(dateString)

timePicker.setDate(date, animated: false)
4
Diamond King

スウィフト4:

    let calendar = Calendar.current
    var components = DateComponents()
    components.hour = 5
    components.minute = 50

    alert.setDate(calendar.date(from: components)!, animated: false)
3
Jay Mutzafi

このように使えます

timePicker.setDate(NSDate(timeInterval: 60, sinceDate: NSDate()), animated: false)

または

timePicker.setDate(NSDate(timeIntervalSinceNow: 60), animated: false)

現在の日付から1分の差で日付を設定します。

2
Dheeraj Singh

文字列から日付または時刻が必要なときにコードの複数行を入力したくない場合は、以下の関数をコピーして次のように使用できます

let DateVar = DateTimeFrmSrgFnc("31/12/1990",FmtSrg: "dd/MM/yyyy")

timePicker.setDate(DateVar, animated: false)

func DateTimeFrmSrgFnc(DateSrgPsgVar: String, FmtSrg FmtSrgPsgVar: String)-> NSDate
{
    // Format: "dd-MM-yyyy HH:mm:ss"

    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = FmtSrgPsgVar
    return dateFormatter.dateFromString(DateSrgPsgVar)!
}
0
Sujay U N