基金会的
查看文档可知,
Date
结构提供了Date.addingTimeInterval(_:)
和Date.advanced(by:)
这两个方法,它们在功能上似乎是相同的,但明显是不同的方法。它们实际上有什么区别还是最终相同的呢?查看文档可知,
advanced(by:)
什么也没说,而addingTimeInterval(_:)
只是说:
与NSDate进行比较时,要添加的值,以秒为单位。
advanced(by:)
完全没有出现。情况变得更加复杂!
Date
在一些早期测试版中确实短暂地采用了Strideable
(为了支持 Combine 功能),但由于在 Swift 中,追溯性(时间上)符合性是 ABI 破坏性变化,所以它被放弃了。目前还没有支持指示特定 OS 发布中引入协议符合性的方法,但如果我没记错的话,这也是计划中的。 - Itai Ferberadvanced(by:)
很可能在幕后调用了addingTimeInterval(_:)
?我猜想在几乎所有情况下都应该使用addingTimeInterval(_:)
。你有什么想法吗? - mredig+
实现的。你使用哪个取决于个人口味。个人而言,我总是会使用addingTimeInterval
,因为这是传统名称,而且在我看来,date.advanced(by: 4)
和date + 4
都是可怕的语法。这里的“4”是什么?秒?毫秒?纳秒?如果我对 Cocoa 不是非常熟悉,我会期望date + 4
添加 4 天(它就在那里说“date”!)。TimeInterval 被定义为始终是秒,因此当它说“addingTimeInterval”时,很清楚。在我看来,其他所有东西都是非常常见的错误来源。但是其他人可能有不同的看法。 - Rob Napier