2016-12-06 31 views
0

我需要轉換字符串類似於「2016-07-10T21:32:20G」到日期。 但由於某種原因,我只有一次又一次。我已閱讀an article about date formater。不幸的是,並沒有在那裏找到答案。我在the documentation中發現了一些東西。和文檔的tels閱讀約Unicode Date Format Patterns。它看起來和我的相似。字符串到日期轉換後得到零

enter image description here

也許我錯過了什麼=(

我的代碼示例不幸總是零

let lastUpdatedDateString = "2016-07-10 21:32:20" 
let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-mm-dd hh:mm:ss" 
let lastUpdated = dateFormatter.date(from:lastUpdatedDateString) 

但這個代碼工作正常:。

let lastUpdatedDateString = "2016-07-10" 
let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-mm-dd" 
let lastUpdated = dateFormatter.date(from:lastUpdatedDateString) 

我m在操場上測試它。

enter image description here

事實上我必須在此字符串轉換( 「:32:2016-07-10T21 20G」)日期。

PS

無論如何,感謝關注=)

+2

ŧ他的格式是正確的:'yyyy-MM-dd HH:mm:ss'或'yyyy-MM-dd'沒有時間 – Jeremy

+0

WOW! yyyy-MM-dd HH:mm:ss。它解決了這個問題。請您補充一下關於小寫和大寫的區別? – ZevsVU

+0

以下是DateFormatter使用的unicode格式:http://unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns – Jeremy

回答

1

這是我得到的操場

let lastUpdatedDateString = "2016-07-10T21:32:20" 
let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-ddEEEEEHH:mm:ss" 
let lastUpdated = dateFormatter.date(from:lastUpdatedDateString) 
print(lastUpdated) 

和它打印:Optional(2016-07-10 19:32:20 +0000)(我GMT + 2)

我不知道是什麼G代表所以我不知道如何才能得到模式的最後一個字符。 EEEEE代表星期(1個字符)

編輯:看來G立場公曆

這樣你就可以解析的最後一個字母出字符串,並添加這個,如果它的公曆(但我想這是默認值):

dateFormatter.calendar = Calendar(identifier: .gregorian) 

如果這封信是一個J它的儒略曆,然後你可以看到這個答案,看看如何公曆轉換爲朱利安:https://stackoverflow.com/a/12137019/2106940

2

認爲它只是在你的格式化的資本化。試試這個...

let lastUpdatedDateString = "2016-07-10 21:32:20" 
let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss" 
let lastUpdated = dateFormatter.date(from:lastUpdatedDateString)