2015-03-11 2 views
5

Ich muss den UIDatePicker zu einem bestimmten dynamisch ändern.So ändern Sie UIDatePicker zu einer bestimmten Zeit (in Code)

Meine Datumsauswahl ist nur auf den Zeitmodus eingestellt. ich die Zeit mit

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

einstellen kann, aber ich kann nicht herausfinden, wie es zu einer anderen Zeit zu ändern und nicht zu aktueller Uhrzeit an.

Also wie ändere ich es?

Dank

Antwort

9

Sie haben die Zeit zu ändern, können Sie es NSDateComponents mit tun können, und setzen Sie das Änderungsdatum zu Ihrem 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) 
1

Sie kann wie diese

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

oder

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

verwendet es date mit Unterschied von nur 1 Minute vom aktuellen Datum festgelegt würde.

+0

Ich muss zu einer ganz anderen Zeit wechseln. Ich bekomme eine Zeit vom Server im "HH: mm" -Format und ich muss es in der Datumsauswahl zeigen – ilan

+0

set ur datepicker Format nach Ihrer Zeit –

3

Sie können es durch Formatierung von Datum und Uhrzeit anpassen diese Art und Weise:

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) 
+0

Ich muss ein UIDatePicker nicht ein Textfeld – ilan

+0

Format Datum und Uhrzeit ist nicht die Antwort zum Einstellen von Datum und Uhrzeit für UIDatePicker – CodeOverRide

+0

Aktualisiert: Divi Ich sehe was du versuchst zu tun und hättest klarer machen können, indem du mehr Code zu deinem hinzufügst. Ich versuche, die Abstimmung rückgängig zu machen, konnte es aber nicht. – CodeOverRide

3

Um die Datumsauswahl (nur Zeit) auf eine bestimmte Zeit wie "09:00" einzustellen, würde ich die NSDateComponents und Picker wie folgt setzen.

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

Nützlich für die Einstellung von UIDatePicker bei der Verwendung von datePicker.datePickerMode = UIDatePickerMode.CountDownTimer – ObjectiveTC

0

Wenn u wollen nicht mehrere Zeilen Code jedes Mal, wenn Sie möchten, Datum oder Uhrzeit aus Zeichenfolge U unten Funktion kopieren geben und die Verwendung als

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)! 
} 
1

Swift 3:

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) 
    } 
} 

Verbrauch:

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