我正在使用 Swift 4.2 。我正在努力尝试从iPhone取得UTC与UTC之间的偏移时间。
我有此代码
extension TimeZone {
func offsetFromGMT() -> String
{
let localTimeZoneFormatter = DateFormatter()
localTimeZoneFormatter.timeZone = self
localTimeZoneFormatter.dateFormat = "Z"
return localTimeZoneFormatter.string(from: Date())
}
}
func getCurrentTimeZone() -> String{
return String (TimeZone.current.identifier)
}
var tzOffset = ""
let currentTimeZone = getCurrentTimeZone()
TimeZone.knownTimeZoneIdentifiers.forEach({ timeZoneIdentifier in
if let timezone = TimeZone(identifier: timeZoneIdentifier)
{
//print("\(timezone.identifier) \(timezone.offsetFromGMT())")
if(timezone.identifier == currentTimeZone){
tzOffset = timezone.offsetFromGMT()
}
}
})
如果我这样做
print(tzOffset)
我知道了
-0500
由于我的currentTimeZone是-5
,应该是America/Montreal
吗?
有人可以给我提示吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以获取当前时区,从格林尼治标准时间获取秒数,然后将其除以3600。
TimeZone.current.secondsFromGMT() / 3600 // -3 hs America/Sao_Paulo (current) Brazil