在iOS 9.1上使用NSDateFormatter的意外行为

时间:2015-10-23 10:09:40

标签: ios objective-c ios9

我有这段代码:

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

进行测试

因此,如果将手机设置设置为以24小时格式显示时间即可,但如果我将设置更改为无24小时格式,则表示我有异步行为:

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

enter image description here

但如果我把它改为非24h则是:

enter image description here

enter image description here

正如你所看到的那样,结合它添加的2种格式,例如下午1点到13点或下午6点的13点将是186:00。

是否有时间以24小时格式获得时间?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您好我已经在另一个页面中看到了这种方法,我已将代码更改为:

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.