2016-05-30 1 views
0

Я работаю над преобразовать строку даты NSDate, но я получаю nil:Как преобразовать строку даты в Swift2 2,0

let strDate = self.DateList[0] // "2015-10-06T15:42:34Z" 
print(strDate) 
let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
print (dateFormatter.dateFromString(strDate)) 

И бегущая результат:

2016-05-18T14:00:54.466Z 
nil 

Я не знаю, почему, какие-то предложения?

+1

Это отлично работает для меня – Sulthan

+0

@ Sulthan это прекрасно работает, если 'print (strDate)' возвращает '2015-10-06T15: 42: 34Z', но он возвращает' 2016-05-18T14: 00: 54.466Z' –

+0

@ Бхавин, я вижу, может быть, это дубликат http://stackoverflow.com/questions/14877489/how-to-parse-iso-8601-using-nsdateformatter-with-optional-milliseconds-part – Sulthan

ответ

1

2016-05-18T14:00:54.466Z Вы получили в print(strDate)
так, Ваш формат должен быть yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
// --- ------------------------------ 2016-05-18 T 14:00:54.466 Z ----

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 
print (dateFormatter.dateFromString(strDate)) 
+0

Он работает. Но как я могу заставить его показывать дату и время. теперь необязательно (2016-05-18 04:00:54 +0000) –

+0

означает, что вы хотите удалить необязательный или хотите его в формате 'yyyy-MM-dd HH: mm: ss' –

+0

@JaniceZhan проверить этот http: /blog.apoorvmote.com/convert-date-to-string-vice-versa-in-swift/ –

1

Вы почти что это - просто необходимо, чтобы избежать вне 'Z':

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'Z'"

1

Более безопасное решение было бы используйте ZZZZZ в качестве спецификатора часового пояса или вы можете использовать спецификаторы X.

Разница между Z и X в основном такова, что X допускает использование буквального Z, когда смещение по времени равно нулю. См. Date Field Symbol Table

Конечно, вам также не хватает миллисекундной части (.SSS). Если у вас есть два формата: один с миллисекундами и один без миллисекунд, вам придется использовать два разных форматирования.