NSDateFormatter.dateFromString返回nil(“yyyy-MM-dd”到NSDate)

NSDateFormatter.dateFromString返回nil(“yyyy-MM-dd”到NSDate),string,swift,nsdate,nsdateformatter,nslocale,String,Swift,Nsdate,Nsdateformatter,Nslocale,NSDateFormatter有问题 因此,我有一个格式为“yyyy-MM-dd”的日期字符串,例如2015-09-22。 但是,当我将其传递到NSDateFormatter.dateFromString时,该方法返回nil。我的代码如下: let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd" dateFormatter.locale = NSLocale(localeIdentifier: "

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"
我已经探讨了其他类似的问题,但到目前为止仍然无法解决这个问题。 任何和所有的帮助都将不胜感激

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
返回,因为该日期无效:九月 只有30天

你可以设置

dateFormatter.lenient = true
然后接受“2015-09-31”并将其视为“2015-10-01”。 但是您应该首先检查为什么
payload.objectForKey(“messageexpiration”)

返回无效日期。

您的代码正确,并生成预期结果,例如 输入字符串“2015-09-22”。然而,对于“2015-09-31”输入,
nil
返回,因为该日期无效:九月 只有30天

你可以设置

dateFormatter.lenient = true
然后接受“2015-09-31”并将其视为“2015-10-01”。 但是您应该首先检查为什么
payload.objectForKey(“messageexpiration”)

返回无效日期。

您的代码正确,并生成预期结果,例如 输入字符串“2015-09-22”。然而,对于“2015-09-31”输入,
nil
返回,因为该日期无效:九月 只有30天

你可以设置

dateFormatter.lenient = true
然后接受“2015-09-31”并将其视为“2015-10-01”。 但是您应该首先检查为什么
payload.objectForKey(“messageexpiration”)

返回无效日期。

您的代码正确,并生成预期结果,例如 输入字符串“2015-09-22”。然而,对于“2015-09-31”输入,
nil
返回,因为该日期无效:九月 只有30天

你可以设置

dateFormatter.lenient = true
然后接受“2015-09-31”并将其视为“2015-10-01”。 但是您应该首先检查为什么
payload.objectForKey(“messageexpiration”)

返回无效日期。

这适用于“2015-09-22”(在我的测试中也是如此)。对于“2015-09-31”,返回的是
nil
,因为9月只有30天。这应该适用于“2015-09-22”(在我的测试中也是如此)。对于“2015-09-31”,返回的是
nil
,因为9月只有30天。这应该适用于“2015-09-22”(在我的测试中也是如此)。对于“2015-09-31”,返回的是
nil
,因为9月只有30天。这应该适用于“2015-09-22”(在我的测试中也是如此)。对于“2015-09-31”,返回的是
nil
,因为9月只有30天。哇!真不敢相信我竟然那么愚蠢!对于这个示例,payload.objectForKey(“messageExpiry”)是由我在其他地方手动设置的,所以我应该为错误的值负责。我想这很容易做到。。。非常感谢。哇!真不敢相信我竟然那么愚蠢!对于这个示例,payload.objectForKey(“messageExpiry”)是由我在其他地方手动设置的,所以我应该为错误的值负责。我想这很容易做到。。。非常感谢。哇!真不敢相信我竟然那么愚蠢!对于这个示例,payload.objectForKey(“messageExpiry”)是由我在其他地方手动设置的,所以我应该为错误的值负责。我想这很容易做到。。。非常感谢。哇!真不敢相信我竟然那么愚蠢!对于这个示例,payload.objectForKey(“messageExpiry”)是由我在其他地方手动设置的,所以我应该为错误的值负责。我想这很容易做到。。。非常感谢。非常感谢。多么愚蠢的错误啊,我想很容易就搞定了!非常感谢。多么愚蠢的错误啊,我想很容易就搞定了!非常感谢。多么愚蠢的错误啊,我想很容易就搞定了!非常感谢。多么愚蠢的错误啊,我想很容易就搞定了!