Swift的时区处理

1. 取当前时区

TimeZone.current.identifier
复制代码

时区名:Asia/Shanghai

TimeZone.current.abbreviation()
复制代码

GMT:GMT+8

TimeZone.current.secondsFromGMT()
复制代码

GMT偏移秒数:28800

2. 模拟数据

以下是一个美国时间字符串,方便下面的转换

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

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:46

当前系统是中国时区,故比美国快了13小时

4. 自动化时间样式(交由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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值