简体中文

开发者工具·Unix时间戳转换器

为什么 Unix 时间从 1 一月 1970 开始:该纪元的简短历史

· 背景

时间戳 unix 时间 数据格式

从 Unix 纪元的零点辐射的时间线
原始 ToolAcre 矢量图

1 一月 1970 没有发生任何事情;在 Unix 的原始时钟面临溢出威胁后,选择这个日期是为了方便。这篇文章讲述了早期 Unix 时钟、向秒的转变以及该约定如何传播到各地的故事。

一个没人庆祝的日期 - 为什么半个世纪后 1970 不断出现在错误、默认设置和仪表板中

一月 1970 每当软件错误持续时间很短或秒数为毫秒时就会出现。它不是由 ToolAcre 生成的后备生日;它是解释输入的零点。对纪元零的测试返回 `1970-01-01T00:00:00.000Z` 和星期四。

因此,看到该日期即可进行诊断。接近零的值、强制为零的缺失字段或比例不匹配都可能落在附近。在指责格式化之前捕获原始值。日历输出显示了它收到的算术结果。

ToolAcre 的值得注意的纪元表给零一个有意的标签,强调 1970 是一个定义的引用,而不是浏览器选择的错误页面。

Unix 的第一个时钟 — 从 1971 开始计算六十分之一秒,并在三年内用完 32 位空间

该工作簿详细介绍了从 1971 开始计数六十的早期时钟。所需的存储库源都没有记录该历史记录。即使外部历史后来可能支持它,凭记忆重复它也会违反创作合同。

可以演示的是当前轴:纪元为零,其后为正秒,其前为负秒。该机制足以使用转换器和诊断软件。未来的历史文章应该添加经过审查的主要或学术来源,而不是将代码视为设计会议的证据。

该存储库不来源 Unix 的第一个时钟设计,因此没有断言历史重建

ToolAcre 将其输入命名为 Unix 时间戳,并在错误指导中将其定义为自 1970-01-01 UTC 以来的秒或毫秒。该消息人士没有解释为什么选择这一年,圆度是否重要,或者设计师想要哪个地平线。这些动机仍然被忽略。

算术确实解释了固定原点的持久效用:减法产生经过的距离,比较排序瞬间,并且符号指示值位于零的哪一侧。零的选择是常规的;生产者和消费者之间的一致性使得数字可以互操作。

这种区别将约定和结果分开。当历史学家继续评估有关大会起源的证据时,软件可以自信地依赖其后果。

实现的定义使用 1970;选择它的动机需要这里没有的历史资料

每天按照 POSIX 转换进行测试模型,并显式从 `2016-12-31T23:59:59Z` 跳转到 `2017-01-01T00:00:00Z`。这是该工具行为的可执行证据。它不是对任何外部标准的措辞或完整范围的引用。

将标准声明与实施测试区分开来。测试证明版本在其固定装置下的作用;标准文件定义了符合标准的系统应该做什么。这里的实际契约足够清晰,可以预测产出,而无需发明形式化历史。

该测试还可以防止将来的重构悄悄地将特殊的跳跃标签插入到输出中。可观察到的兼容性受到保护,但没有夸大约定存在的原因。

ToolAcre 测试 POSIX 样式模型,但不作为标准引用

JavaScript Date 表示其纪元计数(以毫秒为单位),而 ToolAcre 接受 Unix 秒并通过乘以 1,000 进行转换。该路线还返回两种形式。这个边界解释了为什么 Web 应用程序经常在同一时刻暴露出三个额外的十进制零。

存储库无法建立数据库、C 库和其他生态系统采用纪元表示的年表。它不是叙述无源的传播,而是显示当前的互操作性接缝并标记所使用的单元。对于当今的开发人员来说,这是可行的证据。

这种限制避免了常见的内容失败:一系列看似合理的里程碑在没有引用的情况下重复,直到后来的读者将累积的重复误认为是书面证据。

存储库证据显示 JavaScript 的毫秒表示,而不是完整的传播历史

固定纪元不包含本地区域。 ToolAcre 将结果日期格式化为 UTC 格式,并在浏览器的本地区域中单独格式化。负值在零之前延伸,如 -1 测试所示。这些结果直接来自数字轴和格式化层。

该实现还具有 ±8.64×1015 毫秒的日期范围。这是所选表示的限制,而不是时代抽象概念固有的限制。在从转换器结果进行归纳之前,始终确定正在讨论的范围和单位。

本地格式化程序可以根据偏移量应用 UTC 边界之前或之后的日期。即不移动零;它仅改变人类历法投影。

这不包括其他系统的纪元,例如 1900、1601 和 1980,它们有自己的历史

其他系统可以选择另一个零和另一个标度,这就是为什么大整数在两个 ToolAcre 单位下可能仍然没有意义。本文不会重述 1900、1601 或 1980 起源的历史。相反,文章 340 侧重于识别不匹配并从记录的定义中导出转换。

当来源未知时,与源文档进行比较,而不是重复移位零。 Unix 转换器故意假设 1970;它无法从一个数字自动识别外国纪元。将原点与单位保持在一起可以防止算术成功变成语义错误。

其他纪元起源单独比较,但不在此声明其历史

可靠的教训是机械的:Unix 零映射到 1970 UTC 的开头,符号在其周围延伸,秒在日期格式化之前变成 JavaScript 毫秒。 ToolAcre 使每个事实都可以通过值 0、−1 和值得注意的历元表进行观察。

人们选择该约定的原因属于历史渊源,而不是现代代码的推论。尊重这个界限会产生一个更短但更真实的叙述。使用转换器进行算术运算;在归因动机或里程碑之前使用适当的历史材料。

证据纪律是技术准确性的一部分。精确的遗漏告诉维护人员在历史帐户可以负责任地扩展之前需要什么新的来源。