2016-05-31 20 views
0

Ich habe einen UIDatePicker, der nur auf die Zeit beschränkt ist. Und sobald diese Zeit erreicht ist, wird eine lokale Benachrichtigung ausgelöst. Aber wenn ich die Zeit ausdrücke, die es abfeuern sollte, ist es immer in der falschen Zeitzone.Zeitzone von NSDate konvertieren

Ich möchte also die Zeitzone in die lokale Zeitzone des Benutzers konvertieren, bevor ich sie in der lokalen Benachrichtigungsfunktion übergebe.

ich es mit diesem Code versucht, aber das offensichtlich nicht

@IBOutlet weak var timePicker: UIDatePicker! 

func convertTimeZone() ->NSDate { 
     var date = timePicker.date 
     var timeZone = NSTimeZone() 
     date.TimeZone.localTimeZone 
    } 
+0

Es gibt ungefähr eine Million Fragen dazu. NSDate _ hat keine Zeitzone. NSDate wird immer in UTC gedruckt. Was Sie versuchen, ist mit ziemlicher Sicherheit völlig falsch. – gnasher729

Antwort

0
var date = timePicker.date 
var timeZone = NSTimeZone.localTimeZone() //1 

let f = NSDateFormatter() 
f.timeZone = timeZone //2 
f.dateFormat = "HH:mm:ss" 

let dateInUserTimezone = f.dateFromString(f.stringFromDate(date))! //3 

Das funktioniert nutzt die aktuellen Benutzers Zeitzone (1), verwendet dann ein Datum Formatierer (2) auf die Zeitzone des Datum zu ändern (3) indem das Datum in eine Zeichenkette umgewandelt wird, dann zurück zu einem Datum, wobei die korrekte Zeitzone verwendet wird.

+0

Vielen Dank! – R3ptor

Verwandte Themen