如何从Date对象中提取TimeZone?

时间:2017-02-08 21:02:59

标签: swift datetime swift3 timezone

我有一个ISO-8601日期字符串,如下所示:"2017-02-07T00:00:00-08:00"

如何从此日期提取TimeZone对象?

2 个答案:

答案 0 :(得分:4)

不幸的是,DateFormatter没有帮助,因为您不需要Date,也不提供有关解析日期字符串的任何时区信息的任何信息。并且TimeZone没有任何可以解析时区偏移字符串的初始值设定项。

所以你必须自己做这项工作。由于您有固定格式的日期字符串,因此您知道时区偏移量始终是字符串的最后6个字符。最后两个是分钟数,前三个是小时数(包括标志)。

从日期字符串中提取这两个子字符串(小时和分钟)。将它们都转换为Int。然后做一些简单的数学计算以秒为单位的偏移量(小时* 3600 +分钟* 60)。

在几秒钟内获得该偏移后,您可以使用TimeZone初始值设定项创建init(secondsFromGMT:)实例。

答案 1 :(得分:-1)

您可以创建仅返回时区的日期格式化程序,如下所示。将缩写更改为您要查找的时区。

//initialize the global variable that way this is the first thing the slider will change to
var distanceMap: Int = 5


override func viewDidAppear(_ animated: Bool) {

    rangeSlider.value = Float(distanceMap)
    distanceLabel.text = String(Int(rangeSlider.value))

}

并使用这些函数将其转换为字符串或将字符串转换为日期。

let timeZoneOnlyDateFormatter: DateFormatter = {
  let formatter = DateFormatter()
  formatter.timeZone = TimeZone(abbreviation: "UTC")
  formatter.dateStyle = .none
  formatter.timeStyle = .none
  return formatter
}()