通过GMT + 8时,时间转换无效

时间:2018-04-18 01:07:37

标签: ios swift

我有一个将时间从一个时区转换为另一个时区的功能。如果我传递EST, GMT, GMT+10, etc...,函数会起作用,但是如果我传递GMT+8或其他GMT次,则if语句永远不会计算为true并被绕过,从而返回nil并使应用程序崩溃。

func convertToLocalTime(fromTimeZone tzAbb: String) -> Date? {
   if let timeZone = TimeZone(abbreviation: tzAbb) {

        let targetOffset = TimeInterval(timeZone.secondsFromGMT(for: self))
        let localOffeset = TimeInterval(TimeZone.autoupdatingCurrent.secondsFromGMT(for: self))
        return self.addingTimeInterval(targetOffset - localOffeset)

   }
 return nil
}

1 个答案:

答案 0 :(得分:2)

GMT + 10表示格林尼治标准时间偏离10小时。这种格式在“+”符号后需要两个密码,因此GMT + 9的格式基本上是GMT + 09。这就是为什么你的GMT + 1到GMT + 9没有被正确解析,但GMT + 10及以上是。 此外,如果您出于某种原因想要指定分钟偏移量,您可以在示例中说GMT + 1109。