24小时时间没有正确格式化日期

时间:2014-10-28 12:15:31

标签: ios objective-c formatting nsdate nsdateformatter

以下是我的代码。

mmDD = [[catererSQLArray objectAtIndex:i] valueForKey:@"mmdateNTime"];
NSLog(@"mmDDmmDDmmDDmmDD===%@", mmDD);
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"EE dd MMM yyyy hh:mm aa";
NSDate *yourDate = [dateFormatter dateFromString:mmDD];
NSLog(@"yourDate==%@", yourDate);
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm";
mmDD = [dateFormatter stringFromDate:yourDate];
NSLog(@"mmDDmmDD==%@", mmDD);

mmDD的输入为Fri 31 Oct 2014 04:00 PM

当我以12小时格式运行上面的代码时,我得到了以下内容。

12小时格式

mmDDmmDDmmDDmmDD===Fri 31 Oct 2014 04:00 PM
yourDate==2014-10-31 13:00:00 +0000
mmDDmmDD==2014-10-31 16:00

当我以24小时格式运行代码时,我得到了以下内容。

24小时格式

mmDDmmDDmmDDmmDD===Fri 31 Oct 2014 04:00 PM
yourDate==(null) <-----<-----<-----<-----<-----<-----
mmDDmmDD==(null) <-----<-----<-----<-----<-----<-----
          ^^^^^^

任何想法为什么&amp;解决这个问题的解决方案是什么?

2 个答案:

答案 0 :(得分:2)

您应该设置支持24小时制的语言环境。 请尝试以下方法:

NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[dateFormatter setLocale:enUSPOSIXLocale];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm";
mmDD = [dateFormatter stringFromDate:yourDate];
NSLog(@"mmDDmmDD==%@", mmDD);

答案 1 :(得分:2)

您需要设置dateFormatter的区域设置。默认情况下,它是用户的语言环境,其用户默认值将覆盖您指定的格式。请参阅此technical note