2013-10-01 4 views
0

Как просто, какNSDateFormatter неверная дата

 NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
    [df setDateFormat:@"dd/MM/yyyy"]; 
    NSLog(@"Current date in event %@ %@",currentDate,[df stringFromDate:currentDate]); 

Но в журнале

Current date in event 2013-10-01 22:00:00 +0000 02/10/2013 

Почему?

+0

Мне кажется, что ваш часовой пояс на два или более часа впереди времени UTC (с тех пор, как вы находитесь в Италии). – rmaddy

+0

Почему? Почему печать currentDate отличается от печати stringFromDate:? проблема в день: разница в 1 день! – giuseppe

+0

Запустите его утром и не будет разницы в дневных условиях – gWiz

ответ

3

Когда вы регистрируете NSDate, он всегда печатает в UTC. Когда вы используете stringFromDate:, вы получаете дату по местному времени, если вы не измените часовой пояс форматирования даты.

В этом случае вы будете в часовом поясе на два часа раньше, чем в UTC (при условии, что вы находитесь в Италии).

С NSDate объект находится 1 октября 2013 года в 22:00 UTC, это точно так же, как полночь 2 октября 2013 года в UTC + 2. Вот почему вы видите строку, показанную 2 октября.

Вот еще один способ взглянуть на нее. Вы не видите разницу в 1 день. Вы фактически видите разницу в 2 часа из-за своего часового пояса. С полуночи до 0200 часов вашего времени вы увидите то, что кажется разницей в 1 день.

+0

даты в iOS - это очень головная боль! – giuseppe

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