Преобразование NSString в NSDate дает неверный результат

Возможный дубликат:
Неверное время из NSDateFormatter
NSDate через 5 часов

Я пытаюсь преобразовать NSString в NSDate с помощью кода

result = @"2012-02-09";

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];

NSDate *dateFromString = [[NSDate alloc] init];
dateFromString = [dateFormatter dateFromString:result];
[dateFormatter release];
NSLog(@"date: %@", dateFromString);

Но преобразование даты дает неверный результат в журналах:

2012-02-07 13:08:29.553 Document[611:15503] date: 2012-02-08 19:00:00 +0000

Может кто-нибудь, пожалуйста, скажите мне, что не так с моим кодом?


person Omer Abbas    schedule 07.02.2012    source источник
comment
Дублирование 27 000 000 других вопросов SO - ваш часовой пояс GMT +5 (Пакистан), NSDate регистрирует себя как GMT. В вашем коде нет ничего плохого. Если вам нужно локальное строковое значение из даты, передайте дату обратно через NSDateFormatter, не регистрируйте ее.   -  person jrturton    schedule 07.02.2012
comment
В этом нет ничего плохого — вам просто нужно установить часовой пояс.   -  person tilo    schedule 07.02.2012


Ответы (1)


Чтобы использовать NSLog для отображения даты, вы должны использовать средство форматирования, чтобы NSDate был отформатирован с вашим часовым поясом:

NSLog(@"date: %@", [dateFormatter stringFromDate:dateFromString]);
person Matteo Alessani    schedule 07.02.2012