NSDateFormatter возвращает ноль - PullRequest
1 голос
/ 24 мая 2011

Я пытаюсь отформатировать NSDate в строку с форматом даты yyyyMMdd, вот код

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMdd"];

NSDate *date =data.createdTime;

NSLog(@"%@",date);
NSLog(@"%@",[dateFormatter stringFromDate:date]);

NSLog возвращает мне это значение

Tue, 24 May 2011 0:05:01 +0800
(null)

Кто-нибудь знает, какойчасть не так?

Спасибо заранее.

Ответы [ 2 ]

4 голосов
/ 24 мая 2011

Возможно currentArticle.createdTime является действительной датой, но data.createdTime является nil?Кроме того, вы используете селектор -setDateFormat: для dateFormat, но похоже, что ваш форматировщик даты - dateFormatter.

Попробуйте следующий код:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat: @"yyyyMMdd"];

NSDate *date = data.createdTime;

NSLog(@"   Normal Date = %@", date);
NSLog(@"Formatted Date = %@", [dateFormatter stringFromDate: date]);

[dateFormatter release];

Если date означает nil, тогда вам сообщат оба вызова NSLog().


Редактировать

Дважды проверьте, что data.createdTime является экземпляром NSDate.Возможно, это экземпляр другого класса, такого как NSString, чей -description возвращает отображаемую дату.Это объясняет, почему NSLog() «показывает» дату, но форматер возвращает ноль.

BOOL isDate = [data.createdTime isKindOfClass: [NSDate class]];
NSLog(@"Date %@ a date.", isDate ? @"is" : @"is not");
0 голосов
/ 24 мая 2011
[dateFormat setDateFormat:@"yyyyMMdd"];

Должно быть:

[dateFormatter setDateFormat:@"yyyyMMdd"];

Если оно все еще не работает, значит что-то не так с data.createdTime;, потому что я запустил этот код и получил ожидаемый результат:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyyMMdd"];

NSDate *date = [NSDate date];

NSLog(@"%@",date);
NSLog(@"%@",[dateFormatter stringFromDate:date]);
...