我遇到了问题。我收到 12 小时格式的传入时间字符串,并将它们转换为 NSDate 对象。当 iPhone 为 12 小时格式时,没有问题。但当它采用 24 小时格式时,事情就会出错。下面是一些示例代码来演示:
NSString *theTime = @"3:19 PM";
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"h:mm a"]; // "3:19 PM"
NSDate *date = [formatter dateFromString:theTime];
NSString *theString = [formatter stringFromDate:date];
在 24 小时模式下,日期 为 1970-01-01 03:19:00,theString 为“3:19” - 错误
在 12 小时模式下,日期 为 1970-01-01 15:19:00,theString 为“3:19 PM” - 右
那么...问题 1:为什么设备的 24 小时设置会覆盖我的日期格式化程序设置?
更重要的是,问题 2:如何正确地将 12 小时制转换为 24 小时制?
我已经有代码来检测手机是否处于 24 小时模式,但除了在字符串中挖掘并将 3 替换为 15 之外,似乎没有一个干净的方法来执行此操作。
最佳答案
不确定您是否仍然需要它,但我遇到了类似的问题,通过设置日期格式化程序的区域设置解决了这个问题。也就是说,如果您想强制其为 12 小时模式,无论用户的 24/12 小时模式设置如何,您都应该将区域设置设置为 en_US_POSIX。
关于iphone - NSDateFormatter dateFromString 和 iPhone 中的 24 小时格式混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2173965/