我有一堆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)
我尝试所有匹配的策略只是为了获得相同的结果。
这对我来说很奇怪,因为目标已经达到了所需的值,尽管我怀疑它与文档一致。
这是在保留较高幅度分量的同时将秒归零的适当方法吗?还是有更好的方法?
答案 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)