我有一个这样的ISO-8601日期字符串:"2017-02-07T00:00:00-08:00"
。
如何从此日期提取时区对象?
最佳答案
不幸的是,DateFormatter
没有帮助,因为您不需要一个Date
也不提供任何有关时区信息的信息,关于已解析的日期字符串。并且,TimeZone
没有任何初始值设定项可以分析时区偏移量字符串。
所以你必须自己做这项工作。因为日期字符串的格式是固定的,所以您知道时区偏移量总是字符串的最后6个字符。最后2个是分钟数,前3个是小时数(包括符号)。
从日期字符串中提取这两个子字符串(小时和分钟)。将两者都转换为Int
。然后做一些简单的数学计算以秒为单位的偏移量(小时*3600+分钟*60)。
一旦在几秒钟内有了偏移量,就可以使用初始值设定项创建一个TimeZone
实例。