3
嘗試將「2016-06-23 12:00:00」轉換爲UTC日期時我收到「2016-06-23 10:00:00」在Swift中將日期從GMT + 1轉換爲UTC時出現混亂
第一個日期是在GMT + 1,我想要轉換爲UTC。如果我沒有誤認爲GMT + 0 == UTC,那麼12:00應該是11:00?但我總是得到10:00。爲什麼是這種情況,我如何正確轉換它?
我都在操場上和實際設備
在嘗試這樣做這是我使用的代碼:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let datestring:String = "2016-06-23 12:00:00"
print("1: "+datestring)
print("2: "+convertDateToUTC(datestring))
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func convertDateToUTC(_ datestring:String) -> String {
let dateForm = DateFormatter()
dateForm.dateFormat = "yyyy-MM-dd HH:mm:ss"
dateForm.timeZone = TimeZone(abbreviation: "GMT+1")
print(TimeZone.current.abbreviation()!)
let date = dateForm.date(from: datestring)
dateForm.timeZone = TimeZone(abbreviation: "UTC")
let date1 = dateForm.string(from: date!)
return date1
}
}
輸出:
1: 2016-06-23 12:00:00
GMT+1
2: 2016-06-23 10:00:00
謝謝,這確實使它的工作!令我困惑的是TimeZone.current.abbreviation()!給我GMT + 1,而不是GMT + 01 ... 當我現在把TimeZone(縮寫:TimeZone.current.abbreviation()!)它不會再工作,我該怎麼辦? – abcdefg
啊哈。 :)))))))))我認爲我們也應該建議他看看什麼時區_is_而不是僅僅做一個假設。 – matt
@abcdefg最好不要從時區縮寫中創建時區。正如你所看到的,它並不總是工作。另外還有重複的縮寫和大量無效的縮寫。總是使用'identifier'或'secondsFromGMT'初始化器來避免這些問題。 – rmaddy