1

在 iOS 上,NSDateFormatter 有一个“功能”,如果用户启用了 12 小时时间,它会重写您的格式字符串。

我可以很容易地解决这个问题(将格式化程序的语言环境设置为en_US_POSIX);那不是困难。

我的困难是我想创建一个检测 12 小时重写行为的测试用例。我想进行设置,以便当我的格式化程序(它应该只发出 24 小时日期字符串)吐出 12 小时日期字符串时,至少有一个测试用例失败。

我为 SDK current(当前为 6.1)设置了一个 iOS 测试包,目标为 5.0。当我在这个目标下运行测试时,我所有的时间仍然是 24 小时。

我至少有一份关于在野外发生这种情况的报告,所以我现在需要的是在测试用例中可靠地重现它。

4

1 回答 1

0

这是一种检查方法:

NSString *newFmt = [NSDateFormatter dateFormatFromTemplate:@"HH" options:0 locale:[NSLocale currentLocale]];
if ([newFmt hasPrefix:@"h"]) {
    // User in 24-hour locale has iOS device set to 12-hour time
}

这可以通过运行“设置”应用程序并转到“通用”,然后转到“国际”来测试。将区域格式设置为英国。然后转到常规、日期和时间,并将时间格式设置为 12 小时制。然后运行这段代码。

于 2013-08-28T22:11:56.300 回答