首页 > 解决方案 > 在 Swift 中,如何删除 Date 对象中的小时数?

问题描述

我需要使用日期字典,并且我需要删除有关日期的所有信息,除了:日月年

我创建了这个静态函数:

let day = Date() // it's an example
print(day)

func dateSimplificator(WithDate date: Date) -> Date {
    let formatterD = DateFormatter()
    formatterD.dateFormat = "dd MM yyyy"
    let dayString = formatterD.string(from: date)
    let reFormatterD = DateFormatter()
    reFormatterD.dateFormat = "dd MM yyyy"
    let dayFormatted = reFormatterD.date(from: dayString)!
    //print(dayFormatted)
    return dayFormatted
}

print(dateSimplificator(WithDate: day))

当我打印时,我得到: 2020-09-03 10:40:25 +0000 2020-09-02 23:00:00 +0000

这不是我想要的。我需要这样的东西:

日期 => 2020-09-03 10:40:25 +0000 并且当我使用带有日期的静态函数时,我必须获得这样的新日期:2020-09-02 00:00:00 +0000

我的功能应该发生什么变化?

标签: swiftdateformatter

解决方案


首先,您的方法可以在没有日期格式化程序的情况下编写

func dateSimplificator(with date: Date) -> Date {
    return Calendar.current.startOfDay(for: date)
}

其次,日期格式化程序考虑本地时区——在你的情况下显然是 UTC+0100——但print以 UTC 显示日期。2020-09-03 00:00:00 +0100并且2020-09-02 23:00:00 +0000是同一时刻。


推荐阅读