以下是我的代码。
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小时格式运行上面的代码时,我得到了以下内容。
mmDDmmDDmmDDmmDD===Fri 31 Oct 2014 04:00 PM
yourDate==2014-10-31 13:00:00 +0000
mmDDmmDD==2014-10-31 16:00
当我以24小时格式运行代码时,我得到了以下内容。
mmDDmmDDmmDDmmDD===Fri 31 Oct 2014 04:00 PM
yourDate==(null) <-----<-----<-----<-----<-----<-----
mmDDmmDD==(null) <-----<-----<-----<-----<-----<-----
^^^^^^
任何想法为什么&amp;解决这个问题的解决方案是什么?
答案 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。