NSDateFormatter.dateFromString returns 无("yyyy-MM-dd" 到 NSDate)
NSDateFormatter.dateFromString returns nil ("yyyy-MM-dd" to NSDate)
NSDateFormatter 有问题。
所以我有一个格式为 "yyyy-MM-dd"
的日期字符串,例如 2015-09-22。
但是,当我将其传递给 NSDateFormatter.dateFromString 时,方法 returns 为零。我的代码如下:
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"
我已经探索了其他类似的问题,但我仍然无法解决这个问题。
任何帮助将不胜感激。
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"
所以这似乎可行。看起来你一个月的天数太多了,所以这不是一个有效的日期! :)
您的代码正确并产生了预期的结果,例如为了
输入字符串“2015-09-22”。然而,对于输入“2015-09-31”,
nil
被返回,因为那是一个无效的日期:9 月
只有 30 天。
您可以设置
dateFormatter.lenient = true
然后“2015-09-31”被接受并被视为“2015-10-01”。
但是你应该先检查一下为什么 payload.objectForKey("messageExpiry")
returns 无效日期。
NSDateFormatter 有问题。
所以我有一个格式为 "yyyy-MM-dd"
的日期字符串,例如 2015-09-22。
但是,当我将其传递给 NSDateFormatter.dateFromString 时,方法 returns 为零。我的代码如下:
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"
我已经探索了其他类似的问题,但我仍然无法解决这个问题。 任何帮助将不胜感激。
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"
所以这似乎可行。看起来你一个月的天数太多了,所以这不是一个有效的日期! :)
您的代码正确并产生了预期的结果,例如为了
输入字符串“2015-09-22”。然而,对于输入“2015-09-31”,
nil
被返回,因为那是一个无效的日期:9 月
只有 30 天。
您可以设置
dateFormatter.lenient = true
然后“2015-09-31”被接受并被视为“2015-10-01”。
但是你应该先检查一下为什么 payload.objectForKey("messageExpiry")
returns 无效日期。