【发布时间】:2019-08-01 07:00:15
【问题描述】:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = inputFormate //HH:mm:ss
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
let dt = dateFormatter.date(from: date)
// Setting daylightSavingTimeOffset still getting wrong output
//let offset = dateFormatter.timeZone.daylightSavingTimeOffset(for: dt!)
dateFormatter.timeZone = TimeZone.current
dateFormatter.dateFormat = outputFormate //hh:mma
dateFormatter.amSymbol = "am"
dateFormatter.pmSymbol = "pm"
//return dateFormatter.string(from: (dt ?? Date()) + offset)
return dateFormatter.string(from: dt ?? Date())
这对 IST 来说是正确的,但给我 AEST(澳大利亚悉尼)的错误输出。
输入:17:00:00 (UTC)
输出:04:00am (AEST),应该是 03:00am
【问题讨论】:
-
也许你应该添加夏令时?
-
@AlexandrKolesnik 通过添加夏令时仍然获得相同的输出。
-
print(TImeZone.current)能得到什么?悉尼目前处于 UTC+10,所以是的,您应该从17:00:00 UTC获得03:00am。我自己对您的代码的测试,将日期格式化程序的时区设置为 UTC+10,确实按预期给出了凌晨 3 点。所以我怀疑您当前的时区未设置为您认为的那样。 -
@rmaddy 时区是澳大利亚/悉尼(当前) - 标识符:“澳大利亚/悉尼” - 种类:“当前” ▿ 缩写:可选
- 一些:“GMT+10” - secondsFromGMT : 36000 - isDaylightSavingTime : false
标签: ios swift timezone datetime-format