这是日期字符串
NSString * dateString = @"Mon Sep 29 14:40:00 2014 PET";
如何将其转换为NSDate?
NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
[dateFormatter setCalendar:[NSCalendar currentCalendar]];
[dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss yyyy zzz"];
NSDate* date = [dateFormatter dateFromString:dateString];
以上代码不起作用。 上述案例的正确日期格式是什么?
答案 0 :(得分:2)
问题是你的时区定义(PET
),因为它不在可识别的时区列表中(请不要问为什么不);这个时区在Apple的系统中大多称为UTC-5
,因此:
NSString *_dateString = @"Mon Sep 29 14:40:00 2014 PET";
_dateString = [_dateString stringByReplacingOccurrencesOfString:@"PET" withString:@"UTC-5"];
NSDateFormatter *_dateFormatter = [[NSDateFormatter alloc] init];
[_dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"]];
[_dateFormatter setCalendar:[NSCalendar currentCalendar]];
[_dateFormatter setDateFormat:@"EEE MMM dd HH:mm:ss yyyy zzz"];
NSDate *_date = [_dateFormatter dateFromString:_dateString];
NSLog(@"date : %@", _date);
并且控制台说:
date : 2014-09-29 19:40:00 +0000
这是GMT+0
时区中原始日期的正确表示。