不知道有多少人和我一样是今天才知道这个问题的
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
let date = formatter.dateFromString("1987-04-12") // nil
这个问题在 StackOverflow 上是有人提过的,点击查看
其实主要跟一些国家实行 夏时制(Daylight saving time) 有关系,尤其是美国
解决办法我是尝试这样增加一句代码
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd"
formatter.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601)
let date = formatter.dateFromString("1987-04-12") // Apr 12, 1987, 1:00 AM
最后推荐一个夏时制的相关阅读,高晓松的 鱼羊野史 第1卷 中1月6日那一章,有讲到美国于1974年1月6日开始实行夏时制并一直到今天,还讲到其他一些相关的有意思的事情。