为什么当用户在美国时,此代码返回时区为空..? 在其他国家/地区完美运行。
// 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"代表汉堡
等。
缩写显示为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分钟。可能还有其他人。