2015-03-11 23 views
5

Devo modificare UIDatePicker su uno specifico dinamico.Come modificare UIDatePicker in un momento specifico (nel codice)

Il mio selettore di data è impostato solo sulla modalità ora. posso impostare il tempo con

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

ma smusso capire come cambiare in un momento diverso e non tempo corrente.

Quindi come posso cambiarlo?

Grazie

risposta

9

hai per cambiare il tempo , è possibile farlo utilizzando NSDateComponents e impostare la data di modifica al vostro 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

puoi usarlo anche come questo

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

o

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

sarebbe impostare la data con la differenza di 1 minuto dalla data corrente.

+0

Ho bisogno di cambiare in un momento completamente diverso. ottengo un tempo dal server nel formato "HH: mm" e ho bisogno di mostrarlo in data picker – ilan

+0

imposta il tuo formato datapicker in base al tuo tempo –

3

È possibile personalizzarla formattando la data e ora in questo modo:

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

ho bisogno di impostare un UIDatePicker non un campo di testo – ilan

+0

formato Data e ora non è la risposta per l'impostazione di data e ora per UIDatePicker – CodeOverRide

+0

Aggiornamento: Divi Vedo ciò che si tenta di fare e avrebbe potuto essere più chiaro aggiungendo altro codice al proprio. Cerco di annullare il voto ma non posso. – CodeOverRide

3

Per impostare la selezione della data (solo il tempo) a un'ora specifica come "09:00", impostare NSDateComponents e il selettore come questo.

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

Utile per impostare UIDatePicker quando si utilizza datePicker.datePickerMode = UIDatePickerMode.CountDownTimer – ObjectiveTC

0

Se la u non vogliono digitare più righe di codice ogni volta che si desidera data o ora da stringa U può copiare di seguito la funzione e l'uso come

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

Usage:

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