swift - 是 timeIntervalBetween1970AndReferenceDate + timeIntervalSinceReferenceDate = timeIntervalSince1970
问题描述
我正在浏览一段代码,偶然发现了 and 的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
}
推荐阅读
- firebase - Firebase 托管重写无法正常工作
- excel - 在 Excel 中显示用破折号分隔的两个数字的类似数字格式
- python - Django:尝试在迁移中将用户设置为外键会引发 ValueError
- routes - Active Admin 中的 route_options 有什么用
- asp.net - 我想在我的 asp 项目中使用 js 复制一个表但卡在这里
- mysql - 通过java脚本连接到Mysql的问题
- wordpress - 从 wp 管理员隐藏一些页面 - wordpress
- opengl - 如何从边缘羽化色度蒙版
- java - 比较 Java Spark Dataframe 中的日期
- c++ - 堆分配与 std::vector