dateFromString возвращает неправильную дату - PullRequest
2 голосов
/ 11 августа 2011

У меня есть следующий код:

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy-mm-dd";
    NSDate *cDate = [formatter dateFromString:thisLine];
    NSLog(@"cDate '%@'  thisLine '%@'", cDate, thisLine);  

NSLog печатает: cDate '2011-01-10 05:07:00 +0000' thisLine '2011-07-10' в то время как cDate должен быть '2011-07-10'

Есть мысли?

Спасибо

Ответы [ 2 ]

12 голосов
/ 11 августа 2011

Нижний регистр mm - минуты, а не месяцы, верхний регистр месяца MM:

   NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"yyyy-MM-dd";
    NSDate *cDate = [formatter dateFromString:thisLine];
    NSLog(@"cDate '%@'  thisLine '%@'", cDate, thisLine);  
8 голосов
/ 11 августа 2011

Описание NSDate всегда будет печатать дату в собственном формате, обычно для часового пояса +000.Вам нужно использовать формат даты, чтобы получить правильно отформатированную дату, и использовать ММ для месяца, а не мм .

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy-MM-dd";
NSDate *cDate = [formatter dateFromString:thisLine];
NSLog(@"cDate '%@'  thisLine '%@'", [formatter stringFromDate:cDate], thisLine);

- (NSString *) описание Обсуждение Не гарантируется постоянство представления в разных выпусках операционной системы.Для форматирования даты вы должны использовать вместо этого объект форматирования даты (см. NSDateFormatter и Руководство по форматированию данных)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...