2017-05-09 108 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 –