遇到NSDateFormatter问题。
所以我有一个格式为"yyyy-MM-dd"
的日期字符串,例如2015-09-22。
但是当我将它传递给NSDateFormatter.dateFromString时,该方法返回nil。我的代码如下:
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
let dateAsNSDate = dateFormatter.dateFromString(payload.objectForKey("messageExpiry") as! String)
在此代码正上方的断点处从调试器控制台:
po payload.objectForKey("messageExpiry") as! String
"2015-09-31"
我已经探讨了与此类似的其他问题,但仍然无法解决此问题。 任何和所有的帮助将不胜感激。
答案 0 :(得分:2)
您的代码是正确的,并产生预期的结果,例如对于
输入字符串“2015-09-22”。对于输入“2015-09-31”但是,
返回nil
,因为这是一个无效的日期:九月有
只有30天。
您可以设置
dateFormatter.lenient = true
然后“2015-09-31”被接受并视为“2015-10-01”。
但是你应该先检查为什么 payload.objectForKey("messageExpiry")
返回无效日期。
答案 1 :(得分:1)
var str = "2015-09-29"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
dateFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
let dateAsNSDate = dateFormatter.dateFromString(str)
print(dateAsNSDate)
// -> "Optional(2015-09-29 07:00:00 +0000)\n"
所以这似乎有效。看起来你的月份太多了,所以这不是一个有效的日期! :)