具有无效日期的 NSDate格式化程序



我刚刚发现了一个奇怪的问题。我试图解析一个无效的日期,例如使用 NSDateFormatter 1999-02-31 23:30:00.

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 日(的额外日期的日期。

这是一个已知问题还是我遗漏了什么?

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

最新更新