2017-10-23 6 views
0

Ich habe die Liste der Zeitzonen in meiner App angezeigt. Wenn der Benutzer einen bestimmten Zeitbereich auswählt, muss ich die lokale Zeitzone vom Benutzer in die ausgewählte Zeitzone ändern.Wie ändere ich die Zeitzone in SwiftDate?

Hier ist das Problem, die Region wird in die ausgewählte Zeitzone geändert, aber das Datum, das die lokale Zeitzone ausgibt.

Antwort

0

Sie können DateFormatter als Lösung verwenden, so etwas wie dies versuchen:

let dateString = "<yourDateAsString>" 

let dateFormatter = DateFormatter() 
dateFormatter.locale = Locale(identifier: "en_US_POSIX") // => there are a lot of identifiers you can use 
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0) 
dateFormatter.defaultDate = Date() 
dateFormatter.dateFormat = "dd-MM-yyyy hh:mm” // => your needed time format 

let convertedDate = dateFormatter.date(from: dateString) 
2

A Date keine Zeitzone enthält. Aus der Apple-Dokumentation: Ein bestimmter Zeitpunkt, unabhängig von einem Kalender oder einer Zeitzone.

Die Zeitzone kommt ins Spiel, sobald Sie dem Benutzer ein Datum präsentieren möchten. Und das ist, was ein DateFormatter ist. Wie @ AlexWoe89 bereits darauf hingewiesen, können Sie eine Zeichenfolge mit einem Datum in ein Date Objekt konvertieren, aber Sie können auch ein bestimmtes Datum in eine Zeichenfolge konvertieren, die das Datum in der Zeitzone timeZone Eigenschaft von DateFormatter darstellt.

let date = Date() 

var dateFormatter = DateFormatter() 
dateFormatter.locale = Locale(identifier: "en_US_POSIX") 
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm" 

dateFormatter.timeZone = TimeZone(identifier: "America/Los_Angeles") 
let dateString1 = dateFormatter.string(from: date) 

dateFormatter.timeZone = TimeZone(identifier: "Germany/Berlin") 
let dateString2 = dateFormatter.string(from: date) 

speichern Dies wird 2017-10-23 04:27 in dateString1, während das gleiche Datum in dateString2 zu 2017-10-23 13:27 führt.

+0

Hallo, Wie konvertiert man die DateInRegion in Date @D. Mika – sathish

+0

Durch Aufruf von .absoluteDate. Aber ich weiß nicht viel über SwiftDate-Bibliothek, um ehrlich zu sein. Aber ich denke, DateInRegion hat eine Möglichkeit, einen String aus seinem Datum zu erhalten, ohne absoluteDate und DateFormatter zu verwenden. –

+0

Danke @D. Mika – sathish

Verwandte Themen