2017-04-03 82 views
-1

我想字符串轉換成NSDate的與此代碼零的NSDate從DateFormatter

let dateString = data as! String 
let formatter = DateFormatter() 
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
let date = formatter.date(from: dateString) 
let Calendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian) 
let unitFlags: NSCalendar.Unit = [.hour, .day, .month, .year] 
let components = Calendar?.components(unitFlags, from: date!) 

dateString"2017-04-03T18:50:34.3042751+04:30",但我發現fatal error: unexpectedly found nil while unwrapping an Optional value最後一行。我究竟做錯了什麼?

+1

您的日期格式與您的日期格式不匹配 –

+1

「」2017-04-03T18:50:34.3042751 + 04:30「'應該是'「yyyy-MM-dd'T'HH:mm:ss.SSSSSSSXXXXX」' –

+0

'「yyyy-MM-dd'T'HH:mm:ss.SSSXXXXX」'也應該可以工作 –

回答

0

更改日期格式如下

formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SZ" 

編輯:如果您想了解更多的精度,你可以添加兩個S例如

formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 

S將工作多達3次後,它將無法正常工作。如果您需要解析小數點後三位的分數秒,那麼您需要查看此線程:https://stackoverflow.com/a/27412262/468724

+2

處有':',請注意Z與原始的dateString不匹配。如果從使用日期得到一個字符串,它會導致'「-0300」'而不是'「-03:00」 –

+0

是的@LeoDabus你是對的,但我猜測OP只需要解析日期 –