swift - 在 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
我的功能应该发生什么变化?
解决方案
首先,您的方法可以在没有日期格式化程序的情况下编写
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
是同一时刻。
推荐阅读
- python - 界面拉伸时的一些问题
- google-analytics - 有没有办法确定导致用户放弃 GoogleAnalytics/Data Studio 中应用程序内部旅程的原因?
- html - 将文本固定在一行 - 菜单 CSS 中的移动幻灯片
- python - 尝试安装 scikit-learn 显示 comman exit out with error status 1
- r - 如何使用 R 在我的收件箱中检索 Outlook 电子邮件的正文?
- c# - 将继承类的对象转换为继承类型的实例
- linux - 如何在 shell 脚本中只打印结构化文件的一个字段?
- python - 使用 openface 和 opensmile 视频提取特征
- javascript - 如何在 Vue 中增加循环
- ios - 在重用之前,UITableViewHeaderFooterView 的 VoiceOver 无法正常工作