2016-11-14 4 views
0

Я использую DateFromString NSDateFormatter, но когда ему дается строка, она выплескивает разные часы.iOS 'dateFromString' Возвращение разных?

код

NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init]; 
dateformatter.dateFormat = @"yyyy-MM-dd"; 
NSDate *firstDate = [dateformatter dateFromString:@"2017-06-02"]; 
NSDate *secondDate = [dateformatter dateFromString:@"2016-11-02"]; 

выход

firstDate: 2017-06-01 22:00:00 +0000 
secondDate: 2016-11-01 23:00:00 +0000 

Интересно, почему они не имеют один и тот же час?

+2

Всякий раз, когда вы печатаете дату в отладчике, печатная дата будет напечатана в формате UTC, поэтому дата, напечатанная на вашем отладчике, является конверсией вашей прошедшей даты в UTC, если вы хотите ее дополнительно протестировать, а затем конвертировать ее date в String и распечатать его в отладчике. – Rajat

ответ

1

Вы не указали время для двух дат, так что они были инициализированы до полуночи, по местному времени. Когда вы их печатали, они отображались в формате UTC. Ваш местный часовой пояс (Центральноевропейское время) наблюдал переход на летнее время с 27 марта 2016 года по 30 октября 2016 года. Поэтому в июньскую полночную дату, которая попала под переход на летнее время, на 2 часа больше, чем UTC (22:00:00) в то время как ноябрьская полуночная дата, которая не подпадает под летние сбережения, составляет всего 1 час раньше UTC (23:00:00).

Смежные вопросы