我有这个代码:

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm Z"];
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];
[dateFormat setLocale:[NSLocale currentLocale]];
NSString *sDate = [dateFormat stringFromDate:_datePicker];

_datePicker来自此,datePicker是一个UIDatePicker
_datePicker = datePicker.date;

可以肯定,这在iOS 7中可以正常运行,现在我正在9.1中进行测试

因此,如果将电话​​设置设置为以24h格式显示时间就可以了,但是如果我将设置更改为无24h格式,则我会产生疏远行为:

如果设置为24h,则输出为:

ios - iOS 9.1上NSDateFormatter的异常行为-LMLPHP

但是,如果我将其更改为非24h,则:

ios - iOS 9.1上NSDateFormatter的异常行为-LMLPHP

ios - iOS 9.1上NSDateFormatter的异常行为-LMLPHP

如您所见,就像将两种格式组合在一起一样,例如将下午1点的13点添加到131:00或晚上6点将是186:00。

是否有解决方法可以始终以24h格式获取时间?

提前致谢。

最佳答案

嗨,我在另一页中已经嘲笑了这种方法,并且我将代码更改为:

NSDateFormatter *rfc3339DateFormatter = [[NSDateFormatter alloc] init];
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];

[rfc3339DateFormatter setLocale:enUSPOSIXLocale];
[rfc3339DateFormatter setDateFormat:@"yyyy-MM-dd HH:mm Z"];
[rfc3339DateFormatter setTimeZone:[NSTimeZone localTimeZone]];

NSString *sDate = [rfc3339DateFormatter stringFromDate: _datePicker];

现在工作正常,但是我不确定这是正确的方法。

我希望这对以后的人有所帮助。

更新: This is where I got the code.

10-02 13:27