我正在试图弄清楚当前的语言环境是使用12小时还是24小时制。我一直在检查NSDateFormater无济于事。任何线索?
谢谢!
答案 0 :(得分:3)
你最好的选择绝对是做[someNSDateFormatter stringFromDate:someDate]或[someNSDateFormatter dateFromString:someString],但是如果你真的想做你要问的事,那就看看Unicode standard for date format strings,这是iPhone OS使用的。
请注意,a用于AM / PM符号,而h / hh / H / HH / k / KK是小时符号的所有可能性,具体取决于它是从0还是1计数,是12还是24小时,用零或不用零填充。
实现这一点的代码可能类似于:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterNoStyle];
[dateFormatter setTimeStyle:NSDateFormatterLongStyle];
if([[dateFormatter dateFormat] containsString:@"a"]) {
// do something
} else {
// do something else
}
[dateFormatter release];
但是,你必须要小心,因为文字字符可以包含在单引号中,所以你必须考虑到这一点。您可以尝试寻找h或k,但请注意,因为法语代表下午2:05为14h05(不确定它是如何在iPhone上显示的,但这就是他们经常写的方式),所以时间格式可能包括像k'h'mm
这样的东西答案 1 :(得分:1)
这不是语言环境设置,而是一组语言环境设置。它是时间格式的一部分,其中有四种(至少在Mac上),它们并不一定都使用相同的AM / PM指定。在Mac上,甚至可以使用带有AM / PM段的24小时小时段,输出如“17:35 PM”-silly,但仍然可能。
最简单的方法是让日期格式化程序为您设置日期对象的时间格式,假设这对您正在做的事情有意义。如果没有,有趣的时间就会朝着你的方向发展。
在iPhone上,格式字符串的UI只是一个切换开关(24小时,开启或关闭),因此您不必担心病态情况。在用户默认值中选择AppleICUTimeFormatStrings
中的一个格式字符串,然后解析它,查找其中一个AM / PM format characters。请务必跳过''
之间的任何内容,因为该内容是文字字符串,而不是格式字符。
请注意是否将应用程序带到了Mac上。如果你这样做,我不会费心去理解格式字符串 - 只需在你自己的首选项中设置一个复选框。