[英]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.