Я знаю о NSDateComponents
, но дело в том, что какой-то недельный механизм испортит результат, когда дата находится в голове или у подножия года.Как получить правильный год от NSDate при любых обстоятельствах?
Например:
NSCalendar *calendar = [NSCalendar currentCalendar];
NSCalendarUnit calendarUnit = NSYearCalendarUnit;
NSDateComponents *dateComponents = [calendar components:calendarUnit fromDate:self.date];
(lldb) po self.date
2015-12-31 16:00:00 +0000
(lldb) po dateComponents
<NSDateComponents: 0x12f4c83f0>
Calendar Year: 2016
Изменение minimumDaysInFirstWeek
не имеет большого значения, либо, и NSDateFormatter
не кажется, лучше.
Ваш часовой пояс. Вы> +8: 00? – Larme
@Larme yes (lldb) po [[NSCalendar currentCalendar] timeZone] Азия/Шанхай (GMT + 8) офсет 28800 – dopcn