Swift中如何获取Date对象的时区?
为什么Swift的Date拿不到时区?
Swift里的Date其实就是个UTC时间戳——它代表的是时间线上一个绝对的点,从2001年1月1日00:00:00 UTC到目标时刻的秒数/纳秒数,本身不带任何时区、日历这类本地化信息。时区只是用来把这个绝对时刻转换成不同地区“本地时间”的规则,不属于Date本身的属性,所以它根本没提供获取时区的方法。
怎么获取你需要的时区?
如果你要的是当前设备的时区,或者想把Date和时区关联起来,有这几个思路:
直接拿系统当前时区
用TimeZone.current就能获取设备默认的时区,比如国内就是Asia/Shanghai:let currentTZ = TimeZone.current print(currentTZ.identifier) // 输出 "Asia/Shanghai" print(currentTZ.abbreviation()) // 输出 "CST"给Date绑定指定时区来处理
如果你需要把某个Date转换成特定时区的时间展示,可以用Calendar指定时区,再提取日期组件:let now = Date() // 比如指定纽约时区 let nyTZ = TimeZone(identifier: "America/New_York")! let calendar = Calendar.current calendar.timeZone = nyTZ // 提取纽约时区下的年月日时分 let components = calendar.dateComponents([.year, .month, .day, .hour, .minute], from: now)初始化特定时区
如果你需要某个特定时区(不是当前设备的),直接用时区标识符创建就行:if let londonTZ = TimeZone(identifier: "Europe/London") { // 处理伦敦时区相关逻辑 }
内容的提问来源于stack exchange,提问作者chitgoks
相关产品推荐
相关产品推荐

