快速将日期秒舍入为零

时间:2019-08-26 09:12:34

标签: swift date

我有一堆Date对象,我想对这些对象执行计算,因为这些计算不需要第二精度,所以我尝试将Date上的秒数“清零”。除非Date的秒数为零,否则一切正常,在这种情况下,Swift将分钟数减1,例如10:30:00-> 10:29:00。

我的代码:

let calendar = Calendar.current
var minuteComponent = DateComponents()
minuteComponent.second = 0

let dateDelta = calendar.nextDate(after: date, matching: minuteComponent, matchingPolicy: .nextTime, direction: .backward)

我尝试所有匹配的策略只是为了获得相同的结果。

这对我来说很奇怪,因为目标已经达到了所需的值,尽管我怀疑它与文档一致。

这是在保留较高幅度分量的同时将秒归零的适当方法吗?还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

一种选择是使用日期格式化程序,因为它缩短了秒数,这与四舍五入是一样的。

let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm"

let noSeconds = formatter.date(from: formatter.string(from: someDate))

这是使用Calendar&DateComponents的类似解决方案

let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents([.year, .month, .day, .hour, .minute], from: someDate)
let noSeconds = calendar.date(from: components)