日历的 startOfDay() 为某些日期提供了不正确的时间



当使用参数Date(timeIntervalSince1970: 0)调用startOfDay(for: )时,我得到了一个小时的日期

例如:

let twoThousandAndOne = Date(timeIntervalSinceReferenceDate: 0)
let nineteenSeventy = Date(timeIntervalSince1970: 0)
print("Two thousand and one: (twoThousandAndOne)")
print("Nineteen seventy: (nineteenSeventy)")
let calendar = Calendar.current
print("Start of two thousand and one: (calendar.startOfDay(for: twoThousandAndOne))")
print("Start of nineteen seventy: (calendar.startOfDay(for: nineteenSeventy))")

输出:

Two thousand and one: 2001-01-01 00:00:00 +0000
Nineteen seventy: 1970-01-01 00:00:00 +0000
Start of two thousand and one: 2001-01-01 00:00:00 +0000
Start of nineteen seventy: 1969-12-31 23:00:00 +0000

您的时区是 UTC+1

Calendar考虑本地时区,但print以 UTC 显示日期。

要打印使用 UTC 格式Calendar创建的日期,请添加 UTC 时区

var calendar = Calendar.current
calendar.timeZone = TimeZone(secondsFromGMT: 0)!

最新更新