NSDateFormatter 的 dateFromString: returns nil in iOS 11
NSDateFormatter's dateFromString: returns nil in iOS 11
我有这个代码:
NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.dateStyle = NSDateFormatterLongStyle;
dateFormatter.timeStyle = NSDateFormatterLongStyle;
NSDate *myDate = [dateFormatter dateFromString:@"2016-03-01 13:42:17"];
对于< iOS 11,找到预期日期,但对于iOS 11(在iPhone 与 iOS 11.1) 这将返回 nil
。
我在 Apple 的文档中没有看到 dateFromString: 的任何 API 更改。怎么了?
基本上不使用日期/时间样式来转换日期字符串。样式代表不同语言环境中的不同字符串。
改为使用固定日期格式并将语言环境设置为 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"];
@Vadian 的回答在 Swift 中也对我有用!谢谢! :)
这是 Swift 版本:
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
Date myDate = dateFormatter.date(from: "2016-03-01 13:42:17")
我有这个代码:
NSDateFormatter *dateFormatter = [NSDateFormatter new];
dateFormatter.dateStyle = NSDateFormatterLongStyle;
dateFormatter.timeStyle = NSDateFormatterLongStyle;
NSDate *myDate = [dateFormatter dateFromString:@"2016-03-01 13:42:17"];
对于< iOS 11,找到预期日期,但对于iOS 11(在iPhone 与 iOS 11.1) 这将返回 nil
。
我在 Apple 的文档中没有看到 dateFromString: 的任何 API 更改。怎么了?
基本上不使用日期/时间样式来转换日期字符串。样式代表不同语言环境中的不同字符串。
改为使用固定日期格式并将语言环境设置为 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"];
@Vadian 的回答在 Swift 中也对我有用!谢谢! :)
这是 Swift 版本:
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
Date myDate = dateFormatter.date(from: "2016-03-01 13:42:17")