Проблема форматирования даты с использованием NSDateFormatter - PullRequest
0 голосов
/ 09 сентября 2011

У меня есть следующая дата:

2011-09-09T18:01:47Z

Я хочу, чтобы она отображалась как

"9/9/11 at 1:47PM" независимо от того, какое правильное время было

Этот код возвращает нулевую строку:

NSLog(@"TIME: %@",[message valueForKey:@"created_at"]);
    NSString* time = [message valueForKey:@"created_at"];
    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"MM-dd-yy at HH:mm:ss"];
    NSDate* newTime = [dateFormatter dateFromString:time];
    [dateFormatter setDateFormat:@"MM-dd-yy at HH:mm:ss"];
    NSString* finalTime = [dateFormatter stringFromDate:newTime];

1 Ответ

3 голосов
/ 09 сентября 2011

Ваше форматирование одинаково для обоих, и они не имеют никакого отношения к вашему вводу и выводу.При возникновении проблем обращайтесь к шаблонам форматов данных Unicode .

NSString *datein = @"2011-09-09T18:01:47Z";

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
//The Z at the end of your string represents Zulu which is UTC
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
NSDate* newTime = [dateFormatter dateFromString:datein];

//Add the following line to display the time in the local time zone
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
[dateFormatter setDateFormat:@"M/d/yy 'at' h:mma"];
NSString* finalTime = [dateFormatter stringFromDate:newTime];
NSLog(@"%@", finalTime);
...