datetime - Swift 3 将日期截断为日/月/年开始的简单方法

标签 datetime swift3

有什么简单的方法可以像我们在 Oracle 数据库中那样截断日期吗?
例如,我需要从午夜开始设置值。在 Oracle 中,我可以执行 TRUNC(SYSDATE)。但是我在 Swift 中看不到类似的方法。
我检查了 StackOverflow,看到了一些 DateFormatter 的例子,Date Components 将 Date 转换为 String。我也看过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)!

enter image description here

我该怎么办?

最佳答案

请注意 +0000在您的样本中的时间结束时。

一天的开始在哪里?我更新了示例以显示您想要的内容。

var comp: DateComponents = Calendar.current.dateComponents([.year, .month, .day], from: Date())
comp.timeZone = TimeZone(abbreviation: "UTC")!
let truncated = Calendar.current.date(from: comp)!
print(truncated)

它打印 2017-06-14 00:00:00 +0000 .再次注意末尾的 +0000。

默认时区设置为当前时区,该时区中的小时、分钟和秒为 0。

我会假设你想要当前的时区。根据该规定,您的代码是正确的。

关于datetime - Swift 3 将日期截断为日/月/年开始的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44554048/

相关文章:

c# - 如何截断 .NET DateTime 的毫秒数

python - 每组最近 n 天的计数

java - 代码审查 : java Dates diff (in day resolution)

cocoa - NSAlert - 如何将 View 呈现为工作表并在 Swift3 中获取返回值?

java - Android Python MySQL 日期时间解析

swift - 在 Swift 3 错误中访问代码

arrays - 字符串快速追加到数组

ios - 如何在 iOS 10 中使用 TouchID

ios - 如何从 Swift 3 中的全局类更新 UIViewController 中的组件?

PHP日期到Javascript日期变成时差?