2017-05-09 106 views
-1

我使用轉換String日期型數組Date使用格式化

let formatter = DateFormatter() 
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" 
for i in 0 ..< data.count { 
    let time = data[i] 
    let ft_date = time["ft_date"] as! String 
    print(ft_date) 
    let dateF = formatter.date(from: ft_date) 
    print(dateF) 
} 

這個代碼和它的控制檯

2017-04-09T00:00:00 
Optional(2017-04-08 19:30:00 +0000) 
2017-04-08T00:00:00 
Optional(2017-04-07 19:30:00 +0000) 
2017-04-05T00:00:00 
Optional(2017-04-04 19:30:00 +0000) 
2017-04-01T00:00:00 
Optional(2017-03-31 19:30:00 +0000) 
2017-04-01T00:00:00 
Optional(2017-03-31 19:30:00 +0000) 
2017-04-01T00:00:00 
Optional(2017-03-31 19:30:00 +0000) 
2017-03-22T00:00:00 
nil 

爲什麼發生這種情況的輸出字符串獲得零日期?這是相同的格式,但我得到零

+1

我不能重現... – Sweeper

+0

我也很困惑,這是正確的邏輯但發生@Sweeper –

+0

你檢查了一天的節能? – Lion

回答

3

你生活在一個國家裏白天上2017-03-22節約時間的變化在半夜?

如果是,這可能是原因,因爲日期不存在。

+0

我住在伊朗, 「2017-03-22」沒有改變,但我該如何解決? –

+0

根據[timeanddate.com](https://www.timeanddate.com/time/change/iran)它確實在伊朗的'2017-03-22'上發生變化 – vadian

+0

哦,你是對的。我該怎麼辦? –

0

您需要更改時間格式;

formatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z" 

enter image description here

+0

你怎麼說這個'yyyy-MM-dd HH:mm:ss Z'等於'2017-03-22T00:00:00'返回無 –

+0

@Amir_P - 我沒有看到任何東西改變你的日期格式 –

+0

你的意思是? @ Anbu.Karthik –