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

mok*_*258 5 iphone nsdateformatter ios swift

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

\n\n

NSDateFormatter.dateFromString(String) 将返回

\n\n
\n

使用接收器\xe2\x80\x99s 当前设置解释的字符串的日期表示形式。如果 dateFromString: 无法解析字符串,则返回 nil。

\n
\n\n

然后当我给它一个空字符串“”时,它应该返回nil吗?\n当我在操场上这样做时

\n\n
let date = ""\nlet dateFormatter = NSDateFormatter()\ndateFormatter.dateFormat = "yyyyMMdd"\nprint(dateFormatter.dateFromString(date))\n
Run Code Online (Sandbox Code Playgroud)\n\n

它给了我

\n\n
"Optional(1999-12-31 15:00:00 +0000)\\n"\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是正常行为吗?\n还是我做错了什么?

\n\n

谢谢

\n

Ida*_*dan 1

如果 dateFromString: 无法解析字符串,则返回 nil

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

为什么会发生这种情况?我认为这就是类的编写方式,因为日期格式化程序确实会跳过丢失的数据并尝试完成它。可能不存在“一切都缺失”的情况。