簡體   English   中英

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

[英]NSDateFormatter.dateFromString returns nil (“yyyy-MM-dd” to NSDate)

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"

我已經探索了與此類似的其他問題,但到目前為止仍無法解決此問題。 任何和所有幫助將不勝感激。

您的代碼是正確的,並且會產生預期的結果,例如輸入字符串“ 2015-09-22”。 但是,對於輸入“ 2015-09-31”,將返回nil ,因為這是一個無效日期:9月只有30天。

你可以設定

dateFormatter.lenient = true

然后接受“ 2015-09-31”並將其視為“ 2015-10-01”。 但是,您應該先檢查一下payload.objectForKey("messageExpiry") 為什么返回無效日期。

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"

這樣看來可行。 看來您一個月中的日子太多了,所以這不是一個有效的日期! :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM