我正在浏览代码,偶然发现了timeIntervalBetween1970AndReferenceDate
和timeIntervalSinceReferenceDate
的使用。
代码返回以毫秒为单位的时间戳:
return (Date.timeIntervalBetween1970AndReferenceDate + date.timeIntervalSinceReferenceDate) * 1000
这不等于:
return date.timeIntervalSince1970 * 1000
确实没有区别。Date
具有类型属性
public static let timeIntervalBetween1970AndReferenceDate: TimeInterval
// The number of seconds from 1 January 1970 to the reference date, 1 January 2001
和实例属性
public var timeIntervalSinceReferenceDate: TimeInterval { get }
// The interval between the date value and 00:00:00 UTC on 1 January 2001.
public var timeIntervalSince1970: TimeInterval { get }
// The interval between the date value and 00:00:00 UTC on 1 January 1970.
这意味着对于Date
标识类型的任何值date
Date.timeIntervalBetween1970AndReferenceDate + date.timeIntervalSinceReferenceDate
== date.timeIntervalSince1970
持有。事实上,正如我们在 Date.swift#L111 中看到的,timeIntervalSince1970
实现为
public var timeIntervalSince1970: TimeInterval {
return self.timeIntervalSinceReferenceDate + Date.timeIntervalBetween1970AndReferenceDate
}