开发者工具·Unix时间戳转换器
负 Unix 时间戳:如何表示 1970 之前的日期
· 工作原理
时间戳 unix 时间 数据格式
Unix 时间从 1970 开始向前计数,但也向后计数。这篇文章解释了负纪元的含义,-1如何成为1969的最后一秒,以及假设正值的系统在哪里崩溃。
带减号的出生日期 — 出生于 1965 的用户存储为负整数,以及将其视为错误的代码
在 1970 之前出生的人的记录可以合法地包含负 Unix 时间戳。拒绝每个前导减号会将表示选择转换为数据丢失错误。 ToolAcre 的解析器接受可选符号,并且 `fromEpoch` 将低于零的解释毫秒值标记为 `beforeEpoch`,而不是将其视为无效。
然后显示会添加一条注释,解释该时刻先于 Unix 纪元。这比默默地呈现日期更强大,因为它使审阅者可以看到不寻常的标志。如果上游模式禁止负数,则失败属于该模式或迁移,而不是映射到零两侧的计数的算术。
有符号整数和纪元 — 为什么 time_t 有符号,以及 −1 和 −86400 对应什么
零为 1970-01-01T00:00:00.000Z。存储库测试证明 -1 第二个是前一个时刻 `1969-12-31T23:59:59.000Z`。同样,-86,400 秒是零之前的固定 POSIX 天。有符号算术使轴连续,而不需要旧记录的第二个纪元。
大纲将签名存储归因于 `time_t`,但此代码并未建立每个平台使用的设计历史或类型。它更窄的证据就足够了:JavaScript 数字可以是负数,检测使用绝对大小,并且日期可以格式化结果。将生产油田的声明类型与转换器接受的输入分开描述。
在零附近进行有符号纪元算术,没有说明为什么每次 time_t 选择其类型
负值保留与正值相同的单位区别。 `−1000` 秒指向纪元之前 1,000 秒,而 `−1000` 毫秒仅指向纪元之前一秒。自动检测将两者视为秒,因为它们的大小低于 1011,因此较短的纪元前毫秒计数需要显式毫秒选择。
这是数字计数民间传说的具体失败。开发人员看到减号和四位数字无法从外观推断出单位。使用源合同,选择选择器并检查单元注释。 ToolAcre 的大小规则是典型数据的默认规则,不能替代接近 1970 的历史值的元数据。
负值失败的地方 - 使用 −1 作为哨兵的系统、无符号存储、夹紧的日期选择器以及拒绝它们的语言
在转换器之外,`−1` 有时被保留为缺失值哨兵,并且无符号列无法保留任何负时刻。这些是常见的设计可能性,但存储库无法证明特定数据库、日期选择器或语言的行为方式。在将档案日期移过实际边界之前测试实际边界。
有用的探针包含三个值:null 或记录的缺失标记、-1 和明显较旧的日期。如果 -1 消失而旧值仍然存在,则涉及哨兵处理;如果所有底片均失败,请检查类型和验证。不要通过添加 1970 年或取绝对值来“修复”症状,因为两者都会创建不同的时刻。
工作示例:将 −14182940 — 算术转换为 UTC 和格林威治以西本地区域的 7 月 1969 日期
在 −14,182,940 秒内,从纪元开始向后移动 164 完成 86,400 秒,留下 13,340 秒。剩余时间为 3 小时、42 分钟和 20 秒。生成的 UTC 读数为 `1969-07-20T20:17:40.000Z`,这是专门为本文选择的即时值。
UTC 以西的本地读数可能会显示更早的挂钟时间甚至另一个日期,但其确切结果取决于浏览器区域和国际规则。从小组中阅读它,而不是发布通用答案。固定验证是ISO行;本地行是同一负计数的环境注释。
工作示例:使用可验证的 UTC 算术转换 −14,182,940
ToolAcre 根据 ±8.64×1015 毫秒(源中规定的日期范围)检查其解释值。它还证明了 -2,208,988,800 秒到 `1900-01-01T00:00:00.000Z` 的转换。这些事实表明,该路线早于 1970 到达,但这并不意味着每个存储系统都可以承载相同的范围。
带符号的 32 位字段的数学间隔比 JavaScript 日期更窄,但在粘贴数字时转换器不会检查字段宽度。在审核中保留源类型。成功的浏览器转换展示了此处的可表示性,而不是通过其他地方的固件、SQL 列或二进制协议进行安全往返。
转换器的日期范围已知;外部 32 位限制取决于其存储类型
将计数转换为 JavaScript 日期并不会重建几个世纪前每个位置实际打印的民用日历。该实现使用平台的日期模型并返回 ISO 表示;它不包含用于日历改革的历史日历选择器、区域设置档案或文档源。这些说法是故意不存在的。
对于现代软件记录,预测机器表示可能仍然正是您需要的合同。对于家谱、法律历史或档案转录,请保留原始书面日期及其日历背景以及任何派生的纪元。方便的可排序数字不应消除转换无法解决的不确定性。
日历历史声明不在此转换器的证据范围内
Negative 是纪元轴上的方向,而不是错误类别。 ToolAcre 解析它,按大小应用相同的秒或毫秒规则,并将结果标记为纪元之前的结果。这种行为可以让审查者区分合法的旧时刻和其他地方的哨兵或未签名的存储故障。
审核 1970 之前的数据时,请在解释符号之前说明单位、源类型和缺失值约定。然后将 ISO 结果与已知记录进行比较。符号本身就是有意义的算术;周围的模式确定生产者是否打算进行该算术或使用相同的数字作为控制值。