简体中文

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

闰秒和 Unix 时间:为什么纪元假装它们不存在

· 背景

时间戳 unix 时间 时区

直接从 23:59:59 到午夜的时间线
原始 ToolAcre 矢量图

UTC 自 1972 以来插入了闰秒,但 Unix 时间根本不计算它们,这意味着有些秒发生了两次。这篇文章解释了为什么、什么是涂抹以及为什么整个练习计划结束。

第二个发生了两次 - 一个系统中的 23:59:60 ,另一个系统中重复的 23:59:59 ,以及午夜的重复密钥错误

ToolAcre 无法生成以 `23:59:60` 结尾的 ISO 行。其测试命名了闰秒边界,并期望一个纪元值格式为 `2016-12-31T23:59:59.000Z` ,下一个纪元值格式为 `2017-01-01T00:00:00.000Z` 。它们之间没有额外的可显示的秒数。

该事实可能会影响外部源使用其他约定的日志,但此存储库不包含重复键事件证据。如果系统中出现重复的标签,请检查该时钟和存储路径,而不是自动将它们归因于转换器。

因此,每个物理秒都需要唯一标签的系统需要比此 Unix-to-Date 映射更多的上下文。加工商无法制造其型号省略的标签。

ToolAcre 证明没有可代表性的 23:59:60;它不记录重复按键事件

该大纲解释了原子时、地球自转和容差阈值。这些科学和标准声明不是通过时间戳代码或测试建立的。它们是故意被遗漏的,而不是从记忆中转述的。这里的机制并不能证明全球计时政策背后的原因。

对于使用此路线,所需的证据更简单:日期和 ISO 输出公开普通的第二个标签,并且 POSIX 风格的历元跨越测试边界。对闰秒治理的源处理需要超出允许的存储库路径的权威材料。

这个边界是明确的而不是回避的:软件测试回答代表性问题,而科学史需要为此目的编写的材料并根据其自身的条件进行审查。

闰秒的物理原理需要此存储库之外的资源

实现的模型的行为就像其轴上的民用日有 86,400 编号的 Unix 秒一样。连续的整数输入相差一秒,包括跨越 2016 年边界。 `fromEpoch` 将每个值乘以 1,000,然后日期格式化结果毫秒计数。

将此称为“忽略”闰秒描述了可观察的输出:没有唯一的 Unix 值映射到 `:60` 标签。它并不意味着在实际插入过程中每个机器时钟都以相同的速度前进。转换器接受计数;它不会对主机时钟进行采样或控制。

较大范围内的算术遵循相同的约定,因此减去两个 Unix 值可以测量它们的 POSIX 样式计数差异,而不是重建省略的跳跃标签。

测试的转换在连续纪元值之间没有闰秒标签

系统可以应用步骤、重复或涂抹,但存储库无法识别哪些提供者使用哪种方法、在什么时间间隔或使用什么公式。在没有直接证据的情况下公布这些细节将会造成操作上危险的精确性。因此,本文不做出特定于平台的时钟承诺。

如果跳跃边界附近的事件很重要,请保留源的时钟文档和原始值。即使两个值都格式化为 UTC 后,具有不同处理方式的两个系统也可能会出现不一致。单独的转换不能协调它们的采样行为或恢复被忽略的尺度区别。

运行时的选择也会影响事件周围的短期排序。当这种区别在操作上很重要时,保留单调计数器或特定源序列数据。

时钟步长和涂抹行为是特定于平台的,此处未经验证

输入 1,483,228,799 秒:验证的 ISO 结果为 `2016-12-31T23:59:59.000Z`。将输入增加一次至 1,483,228,800:结果为 `2017-01-01T00:00:00.000Z`。减去整数得到 1,与该模型中显示的级数相匹配。

本地行可能会显示不同的日期或偏移量,具体取决于浏览器,但它们源自相同的时刻。使用 ISO 行进行边界检查。本地区域变化与闰秒标签是否存在无关。

该对是一个有用的回归测试,因为 ISO 字符串中不存在区域设置依赖性。它直接将转换器的行为锁定在相关边缘。

工作示例:存储库经过测试的 2016 边界

该工作簿引用了 2022 决议和未来的截止日期。实施证据中没有标准或政策来源,因此此处既没有声明日期也没有预测。计时政策可能会发生变化,并且在出版时值得当前的权威引用。

省略该声明不会削弱软件指导。现有数据仍需要记录其规模、单位和时钟源。转换器当前的行为仍然可以独立于未来民用实践的决策进行测试。

维护者可以稍后通过直接引用决议来添加策略上下文。在那之前,排除最后期限比发布不受支持的未来保证更准确。

未来的政策决议在没有权威来源的情况下被省略

TAI、GPS 和其他比例可以以不同的方式表示时间,但 ToolAcre 没有为它们提供选择器或偏移表。将此类计数粘贴为 Unix 秒仅应用 1970 POSIX 风格的解释。可读的结果在语义上仍然可能是错误的。

使用在相关时刻定义其起源和关系的源转换其他比例,然后检查生成的 Unix 值。不要添加记住的常量:涉及跳跃历史的关系正是无源算术变得脆弱的地方。

在 UI 的三个单位选项中可以看到模式的缺失。没有改变时间尺度;自动仅在两个 Unix 分辨率之间进行选择。

其他时间尺度不在该 Unix 转换器的实现范围内

对于此转换器,验证规则是在测试边界处从 23:59:59 到 00:00:00 的直接步骤。该模型支持普通的纪元算法,并解释了为什么没有出现 `:60` 输出。它不证明操作系统时钟在实际边界通过时的行为方式。

当精确度接近跳跃处理时,转换是最后的呈现步骤,而不是证据来源。首先收集时钟尺度文档、同步行为和原始事件字段。然后,ToolAcre 可以显示声明的 Unix 计数在其测试模型下的含义。

对于远离跳跃边界的普通原木,这种细微差别很少会改变显示。然而,在敏感边界附近,为模型命名可以防止物理秒保真度的虚假声明。