NSDateFormatter не имеет смысла - PullRequest
       9

NSDateFormatter не имеет смысла

2 голосов
/ 17 декабря 2011

У меня есть следующая дата: месяц = ​​декабрь, день = 01, год = 2011. Дата указывается в виде строки NSS со следующим форматом "111201" (ГГММдд) Теперь я хочу проанализировать эту строку в объект NSDate с NSDateFormatter:

self.dateFormatter = [[NSDateFormatter alloc] init];
[self.dateFormatter setDateFormat:@"YYMMdd"];
NSDate* date = [self.dateFormatter dateFromString:strDate];

И вывод «111201» - «2011-11-30 23:00:00 +0000». Это не имеет смысла для меня.

Как это возможно? Я ожидаю "2011-12-01 23:00:00 +0000".

Ответы [ 2 ]

3 голосов
/ 17 декабря 2011

Когда вы отображаете объекты NSDate в отладчике или выводите их значения через NSLog, они всегда отображаются в виде даты и времени по Гринвичу (вот что означает +0000 в конце).

Ваш местный часовой пояс отображается вбыть «+0100» (Западная Европа?), поэтому форматер даты работает с «01 декабря 2011 00:00 утра +0100» и правильно создает NSDate.Но в точке отображения NSDate (которая представляет собой только один момент времени без информации о часовом поясе) отображается в GMT - и эквивалент на час раньше, то есть «30 ноября 2011 г. 23:00 +0000».

Если вы действительно хотите преобразовать '111201' в '01 декабря 2011 00:00 утра +0000', тогда установите часовой пояс форматера даты на GMT следующим образом:

self.dateFormatter.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0];
0 голосов
/ 17 декабря 2011

Попробуйте добавить это в свой форматер даты, чтобы скорректировать часовой пояс по Гринвичу:

self.dateFormatter.timeZone = [NSTimeZone systemTimeZone];
...