将string转换为NSDate给出错误的date

我有一个string,我使用stringFromDate转换,现在我试图将其转换回来,但是当UIPicker启动时,它给了我错误的一天

  let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "dd MMM YYYY" print(birthday) // logs 15 Jan 1992 let date = dateFormatter.dateFromString(birthday) self.datePicker.setDate(date!, animated: true) 

我尝试了硬编码"15 Feb 1992"但仍然是相同的结果。 UIDatePicker上的date显示1991年12月22日在开始。

如果我使用铁杆10 Jan 1980 ,它从1979年12月23日开始。

(我不知道是否是这样的情况,但我有MMM dd YYYY在UIPickerView,而它的dd MMM YYYY的string..我不认为虽然保存,它保存了正确的价值)..

您正在使用错误的格式。 你需要dd MMM yyyy

使用正确的格式string是最重要的..

YYYY是以周为基准的日历年。 (用于ISO周年日历)

yyyy是普通的日历年。

所以,你应该使用“yyyy”而不是“YYYY”。

 let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "dd MMM yyyy" print(birthday) let date = dateFormatter.dateFromString(birthday) self.datePicker.setDate(date!, animated: true) 

更多string格式的date:请参阅此链接

https://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx