iOS 9中的日期格式无法正常工作

时间:2015-10-04 10:29:14

标签: objective-c nsdateformatter ios9

我在iOS 9中遇到日期格式问题,它适用于iOS 8,当我在iOS 9的模拟器中测试它时,它也有效,但是在真实设备上进行测试时使用iOS 9我得到了null。以下是我使用

的代码
NSLog(@"String Date: '%@'", stringDate);
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];
NSDate *date = [dateFormat dateFromString:stringDate];
NSLog(@"Date: %@", date);

在日志中我得到:

String Date: '8/29/2015 4:13:39 PM'
Date: (null)

此外,如果我使用大写h(H或HH),我总是得到那个小时是10。

1 个答案:

答案 0 :(得分:5)

尝试在日期格式化程序上设置区域设置。

[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];

来自Apple Documentation

  

如果您正在使用固定格式的日期,则应首先设置   日期格式化程序的区域设置适合您的固定格式   格式。在大多数情况下,最好选择的语言环境是en_US_POSIX,a   专门设计用于产生美国英语结果的语言环境   无论用户和系统偏好如何。

编辑: Swift版

dateFormat.locale = NSLocale(localeIdentifier: "en_US_POSIX")