Swift的時區處理

1. 取當前時區

TimeZone.current.identifier
複製代碼

時區名:Asia/Shanghaiswift

TimeZone.current.abbreviation()
複製代碼

GMT:GMT+8ide

TimeZone.current.secondsFromGMT()
複製代碼

GMT偏移秒數:28800測試

2. 模擬數據

如下是一個美國時間字符串,方便下面的轉換spa

let src = "2018-12-12 10:48:46"
let timeZone = "GMT-05:00" // USA
let string = src + " " + timeZone
複製代碼

原始字符串src爲: 2018-12-12 10:48:46code

3. 字符串轉換成當前時區的時間

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss ZZZZ"
let date = formatter.date(from: string)
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
formatter.string(from: date!)
複製代碼

2018-12-12 23:48:46orm

當前系統是中國時區,故比美國快了13小時字符串

4. 自動化時間樣式(交由iOS API處理)

實戰中會用Locale.current.identifier初始化Locale,如下爲測試寫死了幾個常見時區。string

  • 中國:年月日 上下午 時間
let chineseLocaleFormatter = DateFormatter()
chineseLocaleFormatter.locale = Locale(identifier: "zh_CN")
chineseLocaleFormatter.dateStyle = DateFormatter.Style.medium
chineseLocaleFormatter.timeStyle = DateFormatter.Style.medium
chineseLocaleFormatter.string(from: date!) 
複製代碼

2018年12月12日 下午11:48:46自動化

  • 美國:月日年 時間 上下午
let usLocaleFormatter = DateFormatter()
usLocaleFormatter.locale = Locale(identifier: "en_US")
usLocaleFormatter.dateStyle = DateFormatter.Style.medium
usLocaleFormatter.timeStyle = DateFormatter.Style.medium
usLocaleFormatter.string(from: date!) 
複製代碼

Dec 12, 2018 at 11:48:46 PMio

  • 英國:日月年 時間(24小時制)
let ukLocaleFormatter = DateFormatter()
ukLocaleFormatter.locale = Locale(identifier: "en_GB")
ukLocaleFormatter.dateStyle = DateFormatter.Style.medium
ukLocaleFormatter.timeStyle = DateFormatter.Style.medium
ukLocaleFormatter.string(from: date!)
複製代碼

12 Dec 2018 at 23:48:46

相關文章
相關標籤/搜索