2012-05-07 5 views
1

Я имею дату (как NSString) формат:формата NSDateFormatter отображение неправильного формата

20120508T224500Z 

Я пытаюсь использовать NSDateFormatter создать NSDate из строки:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyyMMddTHHmmssZ"]; 
NSDate *dateFromString = [[NSDate alloc] init]; 

Но это неправильно анализирует/форматирует NSDate.

Я пытаюсь получить формат:

4:45 PM 5/8/2012 

Как я могу использовать форматирование даты yyyyMMddTHHmmssZ, чтобы получить этот формат?

ответ

4

Вы сингл должен процитировать 'T' и 'Z' в строке: 20120508T224500Z

См unicode date formatting для форматирования информации.

Пример:

NSString *dateString = @"20120508T224500Z"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyyMMdd'T'HHmmss'Z'"]; 
NSDate *dateFromString = [dateFormatter dateFromString:dateString]; 
NSLog(@"dateFromString: %@", dateFromString); 

[dateFormatter setDateFormat:@"h:m a M/d/yyyy"]; 
NSString *newDataString = [dateFormatter stringFromDate:dateFromString]; 
NSLog(@"newDataString: %@", newDataString); 

NSLog выход:

dateFromString: 2012-05-09 2:45:00 +0000
newDataString: 10:45 вечера 5/8/2012

Обратите внимание, что NSLog использует метод описания NSDate и отображает дату/время по местному времени.
Используйте - (void)setTimeZone:(NSTimeZone *)tz, чтобы создать строку в другом часовом поясе.

+0

Отличный ответ! – Brett

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