如果在洛杉矶,时区是空的

时间:2017-07-19 20:53:40

标签: swift timezone location mapkit

当用户在美国时,为什么此代码为时区返回为空? 在其他国家完美运作。

// Get local time zone
let localTimeZoneAbbreviation = TimeZone.current.abbreviation() ?? ""
let indexStartOfText = localTimeZoneAbbreviation.index(localTimeZoneAbbreviation.startIndex, offsetBy: 3) // 3
let timeZone = localTimeZoneAbbreviation.substring(from: indexStartOfText)
print("TimeZone:",timeZone)

我需要数字格式的结果:

“ - 7”为洛杉矶

“ - 4”为纽约

汉堡

“+ 2”

1 个答案:

答案 0 :(得分:1)

缩写为PDT,后面没有任何内容。所以,没有任何抵消。

你可以使用像rmaddy所说的秒来获得偏移量。

let seconds = TimeZone.current.secondsFromGMT()
let hours = seconds / 3600
let minutes = abs(seconds / 60) % 60
let timezoneDiff = String(format: "%+.1d:%.2d", hours, minutes)
print(timezoneDiff)

请务必考虑不同时间的确切位置。有些是30分钟。也可能有其他人。