iOS 24小时制时间格式

4

我想获取当前时间并将其解析为24小时格式的字符串,例如13:30

以下是我的代码:

NSDate *date = [NSDate date];
NSDateFormatter *formatter = [NSDateFormatter new];
[formatter setDateFormat:@"HH:mm"];
NSString *timeString = [formatter stringFromDate:date];

iOS模拟器上可以正常运行,但在我的iPad上却显示为下午3:30

我尝试了不同的格式,但结果仍然相同。

有任何想法吗?

提前致谢。

2个回答

2
问题在于用户的本地设置为12小时制。将本地设置为en_US_POSIX以覆盖用户的设置。
dateFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];

1
谢谢@zaph,它起作用了。我已经根据@neuhaus的答案更改了您的答案为formatter.locale = [NSLocale currentLocale];,它也起作用了。 - Ale
确切地说,这个已知的bug由苹果描述:「时间的表示可能是13:00。然而,在iOS系统中,如果用户将24小时制设置为关闭,时间可能显示为1:00 pm。」 - Fabrice

1

你需要明确将语言环境设置为24小时制的语言环境。

有关如何设置NSDateFormatter的语言环境的详细信息,请参见NSDateFormatter Locale

请注意,该问题的@mtb答案解释了如何不使用语言环境。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接