NSDateFormatter的意外输出

x89*_*a10 2 objective-c nsdateformatter ios

我一直在使用下面的代码NSDateFormatter使用以下格式输出我的日期字符串:"2013年2月18日03:23:32.928000 +0000"

这一直持续有效,直到添加了欧洲iPhone的用户,输出更改为:'2013-02-18 02:00:40 AM.118000 +0000'

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];    
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];    
[dateFormatter setTimeZone:timeZone];    
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSSSSS Z"];
Run Code Online (Sandbox Code Playgroud)

有关格式化程序不能始终如一的原因的任何提示?

tom*_*tom 5

在iOS文档中,有这一行:

在iOS中,用户可以覆盖默认的AM/PM与24小时时间设置.这可能导致NSDateFormatter重写您设置的格式字符串.

这就是为什么你得到AM/PM而不是24小时格式.

你可以通过覆盖你的语言环境来解决这个问题NSDateFormatter.

[dateFormatter setLocale:
 [[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]] autorelease];
Run Code Online (Sandbox Code Playgroud)