Календарь startOfDay () дает неверное время для некоторых дат - PullRequest
0 голосов
/ 16 октября 2018

Я получаю дату через час при вызове startOfDay(for: ) с параметром Date(timeIntervalSince1970: 0)

Например:

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

1 Ответ

0 голосов
/ 16 октября 2018

Ваш часовой пояс UTC + 1

Calendar учитывает местный часовой пояс, но print отображает даты в UTC.

Чтобы напечатать даты, созданные с помощью Calendar в UTC, добавьтеUTC часовой пояс

var calendar = Calendar.current
calendar.timeZone = TimeZone(secondsFromGMT: 0)!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...