我为String编写了这样的扩展名:
extension String {
var asDate : NSDate! {
print(self)
let styler = NSDateFormatter()
styler.dateFormat = "dd MMM yyyy"
print(styler.dateFromString(self))
if let aStyler = styler.dateFromString(self) {
return aStyler
} else {
return NSDate()
}
}
}
我注意到它只适用于在设备上设置英语的情况。但是,它并不适用于俄罗斯。为什么呢?
需要一个字符串,例如" 2016年4月10日",它应该将此字符串转换为日期。但是,如果语言不是英语,则styler.dateFromString(self)
始终为nil
。我检查过self(我要转换的字符串)与unicode格式匹配。但是,我不明白为什么styler.dateFromString(self)
总是返回nil。
答案 0 :(得分:4)
如果没有另外配置,NSDateFormatter
使用默认语言环境来解析字符串。如果您将计算机切换为俄语,则可以使用俄语月份名称。 'Apr'不是俄语,因此无法将该字符串解析为有效月份。
如果要解析的字符串始终为英语,则需要将格式化程序的语言环境设置为英语语言环境。像这样:
let df = NSDateFormatter()
df.locale = NSLocale(localeIdentifier: "en_US")
df.dateFormat = "dd MMM yyyy"
let date = df.dateFromString("21 Apr 2016")