当用户在美国时,为什么此代码为时区返回为空? 在其他国家完美运作。
// 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”
等
答案 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分钟。也可能有其他人。