2017-03-10 4 views
2

In meinem Spielplatz arbeiten, teste ich Umwandlung von Datum Zeit, aber es scheint nicht Umwandlung zu:iOS Datum Zeitzone Umwandlung nicht

import UIKit 

let dateString = "2017-12-01 10:00:00 +0000" 

print("original date = \(dateString)") 

var formatter = DateFormatter() 
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z" 
formatter.timeZone = TimeZone(identifier: "Asia/Shanghai") 

if let date = formatter.date(from: dateString) { 
    print("converted date = \(date)") 
} 
print("test") 

Die Ausgabe lautet:

original date = 2017-12-01 10:00:00 +0000 
converted date = 2017-12-01 10:00:00 +0000 
test 

I ist das konvertierte Datum erwartet etwas wie 2017-12-01 18:00:00 +0800 zu sagen (seit Shanghai 8 Stunden vor der UTC ist 00:00:00)

+0

Zuerst erwähnen müssen, aus der Zeitzone Datum –

+1

entstanden Ich gehe davon aus '+ 0000' bedeutet bereits UTC? – Zhang

Antwort

4

Bitte versuchen Sie dies:

let dateString = "2017-12-01 10:00:00 +0000" 

print("original date = \(dateString)") 

var formatter = DateFormatter() 
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z" 
formatter.timeZone = TimeZone.init(abbreviation: "UTC") 

if let date = formatter.date(from: dateString) { 
    formatter.timeZone = TimeZone(identifier: "Asia/Shanghai") 
    let localTime = formatter.string(from: date) 
    print(localTime) 
} 
print("test") 

Ausgang:

original date = 2017-12-01 10:00:00 +0000 
2017-12-01 18:00:00 +0800 
test 
0

GMT: formatter.timeZone = TimeZone(abbreviation: NSTimeZone.local.abbreviation()!)

UTC: formatter.timeZone = TimeZone(abbreviation: NSTimeZone.default.abbreviation()!)

lokale Datumzeit anzuzeigen, verwende ich die GMTTimeZone.