ios7中的日期格式问题

时间:2013-11-21 05:37:20

标签: ios iphone nsdateformatter

我在日期面临一个奇怪的问题。我在时间格式上获得了不同的结果。 我的代码是

 formatter=[[NSDateFormatter alloc]init];
  [formatter setDateFormat:@"yyyy/MM/dd hh:mma"];
    NSDate  *currentdate=[formatter dateFromString:[formatter stringFromDate:[NSDate date]]];
    NSLog(@"Current Date %@",currentdate);

我在模拟器和其他设备中的输出是

  

当前日期2013-11-13 11:55:00 +0000

但是在一个特定的设备(Iphone 5)中:我收到的输出是

  

当前日期2013-11-13 11:57:00 am +0000

请帮我解决这个问题。谢谢

2 个答案:

答案 0 :(得分:4)

如果显示不同的小时,您可能需要在设置dateFormat后设置默认时区(这只发生在ios7之后)

[dateFormat setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];

似乎默认时区是设备所具有的时区,因此如果您没有指定默认时区,您可能会得到奇怪的结果。在ios7之前,它总是GMT。

<强>更新

如果格式化之后NSDate为零,则应该使用:

[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];

我遇到墨西哥iPhone的这个问题,如果您希望用户对您的应用感到满意,我强烈建议您始终添加此代码。从IOS7开始,我总是使用两个代码片段

答案 1 :(得分:2)

您需要检查iPhone默认设置(设置 - &gt;常规 - &gt;日期和时间)中设置的“日期时间格式”。

如果在此设置中将时间格式设置为24小时,那么您将获得24小时格式的时间。

如果设置为12小时格式,那么你将获得12小时的日期时间格式。

我认为在你的iPhone5设备日期时间设置被设置为12小时格式