NSDateFormatter的dateFromString:在iOS 11中返回nil

nay*_*yem 1 iphone objective-c ios ios11

我有这个代码:

NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.dateStyle = NSDateFormatterLongStyle;
dateFormatter.timeStyle = NSDateFormatterLongStyle;

NSDate *myDate = [dateFormatter dateFromString:@"2016-03-01 13:42:17"];
Run Code Online (Sandbox Code Playgroud)

对于<iOS 11,找到预期日期,但对于iOS 11(在iOS 11.1的iPhone中测试),这将返回nil.

我没有看到dateFromString的任何API更改:在Apple的doc中.怎么了?

vad*_*ian 5

基本上不要使用日期/时间样式来转换日期字符串.样式表示不同语言环境中的不同字符串.

请改用固定日期格式并将语言环境设置为en_US_POSIX:

NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.locale = [NSLocale localeWithLocaleIdentifier:@"en_US_POSIX"];
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";

NSDate *myDate = [dateFormatter dateFromString:@"2016-03-01 13:42:17"];
Run Code Online (Sandbox Code Playgroud)