为什么 NSDateFormatter 在给定空字符串(“”)时不 return nil

Why does NSDateFormatter not return nil when given empty string ("")

我有一个简短的问题。 根据苹果官方文档 https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDateFormatter_Class/#//apple_ref/occ/instm/NSDateFormatter/dateFromString:

NSDateFormatter.dateFromString(字符串) 会 return

A date representation of string interpreted using the receiver’s current settings. If dateFromString: can not parse the string, returns nil.

那么当我给它一个空字符串""时,它应该return nil吗? 当我在操场上这样做时

let date = ""
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyyMMdd"
print(dateFormatter.dateFromString(date))

它给了我

"Optional(1999-12-31 15:00:00 +0000)\n"

这恰好是一种正常行为吗? 还是我做错了什么?

谢谢

没错。如果无法解析该字符串,它将 return nil 但如果您使用空字符串,它将默认 return 该日期。

"" 更改为 " " 或任何内容以填充它,如果它是 nil 您想要获得的内容。

If dateFromString: can not parse the string, returns nil

简单的答案是,dateFromString 确实设法解析了一个空的 string。如果您尝试在 string 中输入错误的数据,例如 "0",那么您将得到 nil

为什么会这样?我假设这只是他们编写 class 的方式,因为日期格式化程序确实会跳过丢失的数据并尝试完成它。可能没有 "all is missing".

的情况