2017-02-24 213 views
1

我想借助DateFormatter将当前日期转换为日期数据类型。我希望日期为dd/mm/yyyy格式,其数据类型应该是Date不是字符串。 这是我尝试过的代码和输出。如何将系统日期转换为日期格式转换为日期数据类型

let date = Date() 
print(date)//output - 2017-02-24 13:39:01 +0000 
let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "dd/MM/yyyy" 
let tempDate = dateFormatter.string(from: date) 
print(tempDate)//output - 24/02/2017 
let currentDate = dateFormatter.date(from: tempDate) 
print(currentDate!)//output - 2017-02-23 18:30:00 +0000 
+0

您没有指定小时/分钟/秒,所以一旦将其从字符串转换回日期,它就会为0(一天的开始)。但是因为我猜想,你在印度的UTC时间为+5:30时区,18:30:00 + 0000是你一天的开始,相当于00:00:00 +5:30。如果你将它转换回String后,你应该有“24/02/2017” – Larme

+0

我不想要小时/分钟/秒这就是为什么我指定了“dd/MM/yyyy” – Ronit

+0

更改dateFormatter时区 dateFormatter。 timeZone = TimeZone(secondsFromGMT:##) –

回答

0

如果您期望的print(currentDate!)输出等于2017-02-24 00:00:00 +0000设置dateFormatter timeZoneGMT

dateFormatter.timeZone = TimeZone(secondsFromGMT:0) 

更新

我想我明白你的需要。您想从Date对象中截断时间。

let date = Date() 
print(date) 
let calendar = NSCalendar.current 
let components = calendar.dateComponents([.day, .month, .year], from: date) 
let currentdate = calendar.date(from: components) 
print(currentdate!) 
+0

我不想输出,我想输出为dd/mm/yyyy格式,其数据类型应该是日期而不是字符串。如果我想要你提到的输出,我已经得到了它。 – Ronit

+0

更新不会从“日期”中截断时间。这是不可能的。这个更新的代码所做的是将“Date”更改为当地时间的午夜。这与“截断时间”非常相似。 – rmaddy