开发者工具·Unix时间戳转换器
UTC、GMT 和 TAI:您的时间戳实际上计算的是哪一个
· 背景
时间戳 unix 时间 时区
GMT、UTC 和 TAI 通常被视为同义词,但它们是具有不同历史的三种不同事物。这篇文章解释了每一个以及它们中的 Unix 时间和日常转换器实际遵循的。
一台服务器上的三个名称 — 日期标头中的 GMT、日志中的 UTC 以及研究论文中的 TAI,全部都在同一秒
服务器可以在一种协议中显示“GMT”,在日志中显示“UTC”,在科学数据中显示另一种时间刻度。类似的时钟标签不具有互换性。第一个任务是识别每个字段背后的合约,而不是在表示层中重命名所有 UTC。
ToolAcre 的契约是明确的:Unix 秒或毫秒成为 ISO 8601 UTC 字符串、可读的 UTC 行和浏览器本地行。它没有音阶选择器。在此路由相关之前,任何非 Unix 计数都必须使用其自己的权威定义进行转换。
有用的库存记录每个字段旁边的规模和序列化。类似的标签不应抹去来源,特别是当数据跨越科学和应用系统时。
格林威治标准时间 — 子午线的平均太阳时、其作为世界参考的历史以及为什么它现在是一个时区而不是标准
该大纲介绍了格林威治标准时间的历史和现代法律用法。这些事实不存在于转换器配置、源或测试中。因此,本文不会通过推理将代码存储库变成历史引用。
在操作上,如果输入显示 GMT,请检查定义协议。与普通申请日期等效的时钟标签仍然可以包含特定的语法或政策要求。 ToolAcre 输出 UTC 标签,不应显示为 GMT 解析器或格式化程序。
如果互操作性取决于术语,请链接代码审查中的控制规范。显示标签绝不能默默地代替有线格式要求。
GMT 历史和法律状态不在存储库证据之内
UTC 行由 `Intl.DateTimeFormat` 和 `timeZone: "UTC"` 生成; ISO 行来自 `toISOString()`。这些调用证明了该界面如何标记其通用阅读。他们没有记录 UTC 何时被采用或其背后的体制机制。
对于调试来说,该标签足以建立独立于当前本地区域的共享引用。比较系统之间的 ISO 字符串或纪元值。如果来源使用其他尺度,请首先证明这种关系,而不是假设熟悉的日期意味着相同的计数。
规范 UTC 输出对于比较环境特别有用,因为它消除了本地区域选择。但是,它不会转换来自未声明的时间尺度的输入。
转换器标记 UTC,但不记录 UTC 定义的历史记录
国际原子时间未在代码、配置或测试中表示。此处没有显示当前偏移、历史差距或转换算法。从内存中提供这样一个常量正是该任务所禁止的那种微妙的时间要求。
将 TAI 标记值保留为 TAI,直到权威库或源对其日期执行转换。直接将其粘贴为 Unix 秒会默默地应用错误的原点或比例,但仍然可以生成精美的 ISO 字符串。可读性不是验证。
外部转换应在变量和类型名称中包含比例名称。在算术之前擦除该标签会使后来看似合理的 ISO 结果无法审核。
TAI 未实现,因此没有断言间隙或转换常量
测试的 Unix 模型从 `2016-12-31T23:59:59Z` 的纪元值 1,483,228,799 前进到午夜的 1,483,228,800。它没有 `23:59:60` 的独特输入。这就是该实现中 POSIX 风格行为的具体含义。
可以合理地说,转换器根据该规则将 Unix 计数映射到 UTC 标记的民用输出。将整数称为每次历史飞跃的精确原子秒计数是有误导性的。该工具生成软件日期,而不是实验室时间尺度测量。
区别很微妙但很实用:序列计算继承 Unix 约定,而民用显示继承 Date 和 Intl 格式。这两条路径都不公开原子时间元数据。
测试的 Unix 模型将 POSIX 样式的秒映射到 UTC 标签,没有闰秒值
工作簿中的 HTTP 和英国法定时间示例需要外部协议和合法来源。它们被省略了。在实现标头或受监管的记录时,请遵循实际规范,而不是根据口语等效性选择 UTC 或 GMT 措辞。
在此模块中,`GMT` 可能会作为 Intl 零偏移量短偏移渲染的一部分出现,但这是格式化程序输出,而不是生成协议日期的承诺。将 UI 显示与有线格式序列化和法律术语分开。
返回零偏移标签的格式化程序不足以进行协议验证。使用其专用的解析器和装置测试完整的序列化标头或受监管的记录。
GMT 的协议和合法使用需要外部来源,因此被省略
GPS 时间和天文日期刻度超出了可接受的模式。 UI 仅提供秒、毫秒或自动检测,并且两种支持的单位均采用 Unix 纪元。没有可以更改原点或跳跃约定的复选框。
来自另一个尺度的数字应该在摄取和存储过程中带有标签。使用专门构建的来源方法进行转换并保留原始内容。只有派生的 Unix 值属于此面板;否则,看似合理的结果可能会掩盖根本性的不匹配。
拒绝不受支持的比例比提供猜测的常量更安全。时间尺度偏移可能对日期敏感,这里错误的精度可能会重新排序科学观测结果。
GPS 和天文比例尺不是可接受的模式
在引用 ToolAcre 的通用行时使用 UTC,因为这是源请求和 UI 标签的内容。为数字输入指定 Unix 秒或毫秒。避免使用将 UTC、GMT 和原子时间折叠为同义词的宽泛表述。
命名精确是一种调试工具。它确定了哪些转换是需要的以及哪些声明尚未得到验证。该转换器为一条路径(Unix 计数到 UTC/local 显示)提供了强有力的证据,并且故意不为不相关的比例提供任何证据。
编写文档时,将每个术语附加到具体字段或格式化程序。 Vague 声称这三个“意思是相同的时间”掩盖了确切的转换责任。