具有无效日期的NSDateFormatter

时间:2017-02-10 09:00:21

标签: date nsdateformatter

我刚刚发现一个奇怪的问题。 我尝试使用1999-02-31 23:30:00解析NSDateFormatter之类的无效日期。

var str = "1999-02-31 23:30:00"
var f = DateFormatter()
f.dateFormat = "yyyy-MM-dd HH:mm:ss"
f.locale = Locale(identifier: "it")
//  f.calendar = Calendar.current
f.timeZone = TimeZone(identifier: "Europe/Rome")!
let parsedDate = f.date(from: str)

如果您在不设置日历的情况下解析它,结果为nil;一旦你设置它,结果就是调整到加入错误日期的额外日期的日期(1999年3月3日)。

这是一个已知问题还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

我找到了isLenient属性。 设置后,格式化程序将使用启发式方法猜测字符串所需的日期。与任何猜测一样,它可能会使结果日期错误(即,除了预期的日期之外的日期)。