2016-10-05 106 views
1

我有以下日期格式:斯威夫特無法解析字符串日期Date對象

2016-08-26T05:16:50.200Z 

,我試圖解析類似的日期格式的字符串到Date對象雨燕3.0。

這裏是我的努力:

let formatter = DateFormatter() 
formatter.dateFormat = "yyyy-mm-dd EEEEE HH:mm:ss Z" 
formatter.locale = Locale(identifier: "us") 

var date = formatter.date(from: date_str)! 

哪裏date_str是上面提到的格式。 不幸的是,swift不識別格式並返回nil。

注意:我不想更改字符串以匹配格式化程序,而是使格式化程序適應字符串的格式。字符串是外部源,所以我沒有能力改變字符串的格式,但是堅持使用它,並創建一個格式化程序來識別字符串的日期模式。

關於我的格式錯誤的任何想法?

+0

也許愚蠢的問題,但你試圖刪除空格因此字符串完全匹配的格式? 「yyyy-mm-dd EEEEE HH:mm:ss Z」 - >「yyyy-mm-ddEEEEEHH:mm:ssZ」 – ZassX

+0

@ ZassX謝謝。我想我已經嘗試過了,但最後還是沒有Z.讓我嘗試。 – John

+0

@ZassX沒有沒有工作。說實話,當我閱讀有關格式化程序可能值的文檔時,Z不可用,我也不知道在真實世界中的日期是什麼意思。 – John

回答

3

你在這裏犯了錯誤,這裏的T不適用於周細節,T只是時間部分開始處的標記。

單個時間點可以通過連接完整的日期表達式,字母T作爲分隔符和有效的時間表達式來表示。例如「2016-10-05T14:30」。

所以,現在只是改變你的dateFomatyyyy-MM-dd'T'HH:mm:ss.SSSZ,你會得到你想要正確的日期。

let formatter = DateFormatter() 
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
formatter.locale = Locale(identifier: "us") 
var date = formatter.date(from: date_str)! 
print(date) 

輸出:

enter image description here

+0

謝謝!誤解了格式! – John

+0

歡迎伴侶:) –