【发布时间】:2017-06-14 20:20:24
【问题描述】:
有什么简单的方法可以像在 Oracle 数据库中那样截断日期吗? 例如,我需要从午夜开始设置值。在 Oracle 中,我可以执行 TRUNC(SYSDATE)。但我在 Swift 中看不到类似的方法。 我检查了 StackOverflow 并看到了一些使用 DateFormatter 的示例,将 Date 转换为 String 的 Date Components。我也看过this question,但不明白如何处理日期(不是NSDate)类型和我
但我不需要字符串值。而且我想避免转换为字符串并返回日期。我只想得到三个值:
当前日期的开始(就像我们在 Oracle 中做 TRUNC(SYSDATE))
月初(就像我们在 Oracle 中执行 TRUNC(SYSDATE, 'MONTH') 一样)
年初(就像我们在 Oracle 中执行 TRUNC(SYSDATE, 'YEAR') 一样)
我试过了,但它不返回午夜:
let comp: DateComponents = Calendar.current.dateComponents([.year, .month, .day], from: Date())
let truncated = Calendar.current.date(from: comp)!
我该怎么办?
【问题讨论】:
-
我有个坏消息要告诉你:不是每天都有午夜。
-
嗯...为什么?一些背景:我需要提取当前日期、当前月份、当前年份的统计信息。我将其用作临时解决方案: Date().addingTimeInterval((-1)*60*60*24) 但这不是我想要的。
-
好的,我已将标题更改为“一天/月/年的开始”。听起来好多了。
-
由于夏令时等原因:stackoverflow.com/a/17726013/3141234