取当前时区
TimeZone.current.identifier
时区名:Asia/Shanghai
TimeZone.current.abbreviation()
GMT:GMT+8
TimeZone.current.secondsFromGMT()
GMT偏移秒数:28800
模拟数据
以下是一个美国时间字符串,方便下面的转换
let src = "2018-12-12 10:48:46"
let timeZone = "GMT-05:00" // USA
let string = src + " " + timeZone
复制代码
原始字符串src为: 2018-12-12 10:48:46
字符串转换成当前时区的时间
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:46
当前系统是中国时区,故比美国快了13小时
自动化时间样式(交由iOS API处理)
实战中会用Locale.current.identifier初始化Locale,以下为测试写死了几个常见时区。
中国:年月日 上下午 时间
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 PM
英国:日月年 时间(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