我有问题。我得到 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,字符串为“3:19” - 错误
在 12 小时模式下,日期为 1970-01-01 15:19:00,字符串为“3:19 PM” - 右
所以...问题 1:为什么设备的 24 小时设置会覆盖我的日期格式化程序设置?
更重要的是,问题 2:如何将 12 小时制正确转换为 24 小时制?
我已经有代码来检测手机是否处于 24 小时模式,但除了在字符串中挖掘并将 3 与 15 交换之外,似乎没有一种干净的方法来做到这一点。