我刚刚发现一个奇怪的问题。
我尝试使用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日)。
这是一个已知问题还是我错过了什么?
答案 0 :(得分:0)
我找到了isLenient
属性。
设置后,格式化程序将使用启发式方法猜测字符串所需的日期。与任何猜测一样,它可能会使结果日期错误(即,除了预期的日期之外的日期)。