我最终为创建了一个自定义运算符Date:
extension Date { static func - (lhs: Date, rhs: Date) -> TimeInterval { return lhs.timeIntervalSinceReferenceDate - rhs.timeIntervalSinceReferenceDate }}使用此运算符,我现在可以在更抽象的级别上计算两个日期之间的差,而无需关心timeIntervalSinceReferenceDate或确切地知道参考日期是什么,并且也不会损失精度,
例如:
let delta = toDate - fromDate
显然,我并没有做太多改变,但是对我来说,它更具可读性和结果:Swift +已经为a Date和a 实现了运算符TimeInterval:
/// Returns a `Date` with a specified amount of time added to it.public static func + (lhs: Date, rhs: TimeInterval) -> Date
So it’s already supporting
Date + TimeInterval = Date
Consequently, it should also support
Date - Date = TimeInterval
我认为,这就是我对
-操作符的简单实现所添加的内容。现在,我可以完全按照问题中的说明编写示例函数:
func computeNewDate(from fromDate: Date, to toDate: Date) -> Date let delta = toDate - fromDate // `Date` - `Date` = `TimeInterval` let today = Date() if delta < 0 { return today } else { return today + delta // `Date` + `TimeInterval` = `Date` }}很可能这是我目前尚不了解的一些缺点,我很想听听您对此的想法。



