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

Ale*_*dar 4 objective-c nsdateformatter ios9

我在iOS 9中遇到了日期格式问题,它适用于iOS 8,当我在iOS 9的模拟器中测试它时它也能正常工作,但是当我在iOS 9的真实设备上进行测试时我会得到它空值.下面是我正在使用的代码

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);
Run Code Online (Sandbox Code Playgroud)

在日志中我得到:

String Date: '8/29/2015 4:13:39 PM'
Date: (null)
Run Code Online (Sandbox Code Playgroud)

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

Abh*_*nav 5

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

[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
Run Code Online (Sandbox Code Playgroud)

来自Apple文档:

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

编辑: Swift版本

dateFormat.locale = NSLocale(localeIdentifier: "en_US_POSIX")
Run Code Online (Sandbox Code Playgroud)