我被這種行爲感到困惑:爲什麼dateformatter.date()默認返回UTC?
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss zzz"
let result = dateFormatter.date(from: "2017-04-12 12:12:12 GMT+1")!
2017年4月12日11時12分12秒UTC
爲什麼結果自動轉換爲UTC?我怎樣才能獲得相同的時區?
處理一個標準化系統(如Unix時間戳或UTC時間)使得處理這個數據MUUUUUUCH更容易。當你比較兩個表示相同時間點但在不同時區的'Date'實例時,你會期望發生什麼? – Alexander
是的,這是有道理的。但我如何實現上述目標? – Houman
可以這樣想:Date是表示時間的數據類型。它不知道任何關於時區,日期,月份,年份等的信息。無論您是希望在格林威治時間格林威治標準時間+1還是中國日曆中及時表達某一時刻,代表它們的「日期」都是一樣。這是其他'DateFormatter'和其他像它一樣的結構(例如'Calendar','DateComponents')的工作,可以根據某些規則集合(日曆系統指定的)將'Date'轉換爲人類表示)。 – Alexander