По всему приложению я использую объекты Date, которые, когда я NSLog отображаю значение, которое мне показывает:
2020-05-24 22:00:00 + 0000
* 1004 25-е (-1 для лета, -1 для часового пояса). Я хочу сделать несколько сравнений дат календаря:
var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = TimeZone(identifier: "UTC")!
// In order to have start on Monday
calendar.firstWeekday = 2
Используя этот календарь, скажем, я хочу получить дату начала текущей недели:
extension Date
{
var startOfWeek: Date {
return Calendar.gregorian.date(from: Calendar.gregorian.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self))!
}
}
Если я NSLog:
Date().startOfWeek
Он покажет мне:
2020-05-25 00:00:00 + 0000
Если я отключу строку часового пояса в календаре, он покажет мне:
2020-05-24 22:00:00 + 0000
Я всегда думал, что вторая - правильная версия UT C. Я ошибся? Поскольку я думал, что все основные данные датируются, все даты указаны во второй версии. Вкратце: если я установил для календаря значение UT C, мои даты будут ошибочными. Если я этого не сделаю, они хороши. И все это время даты указаны в UT C.