Unix 时间戳生成器,免费

选择日期和时间以生成 Unix 时间戳、毫秒时间戳和 ISO 8601 字符串。

Unix 时间戳(秒)
毫秒
ISO 8601
可读(UTC)

工作原理

  1. 日期转时间戳:使用选择器输入日期和时间,然后点击「生成」获取秒和毫秒形式的 Unix 时间戳。
  2. 时间戳转日期:粘贴 Unix 时间戳(秒或毫秒),将其转换回可读的日期和时间。
  3. 获取当前时间戳:点击「现在」即时获取当下的 Unix 时间戳。

为什么使用 Unix 时间戳生成器?

Unix 时间戳是计算机系统中时间的通用语言 · 一个整数,表示自 1970 年 1 月 1 日(UTC)以来经过的秒数。它们驱动数据库、API、日志、身份验证令牌和事件调度。手动在时间戳和可读日期之间转换需要时区计算,极易出错。此工具正确处理双向转换,节省时间并避免时区 bug。

功能特性

常见问题

什么是 Unix 时间戳?

Unix 时间戳是自 Unix 纪元(UTC 1970 年 1 月 1 日午夜)以来经过的秒数。它是与时区无关的时刻表示,因此成为数据库和 API 中存储和比较时间的首选格式。

为什么 JavaScript 使用毫秒?

JavaScript 中的 Date.now() 和 new Date().getTime() 返回自纪元以来的毫秒数(13 位数字),而 Unix 工具和大多数数据库使用秒(10 位)。检查您的时间戳是 10 位还是 13 位,即可知道属于哪种格式。

如何将时间戳转换为本地时间?

粘贴时间戳后,工具会自动将其转换为您浏览器的本地时区。显示同时展示本地时间和 UTC,便于放心处理跨时区场景。

Unix时间从何而来

Unix时间由Ken Thompson和Dennis Ritchie在Unix First Edition(1971年11月)中定义。最初内核以1971-01-01为起点以60分之一秒为单位在32位字段中计数,2年9个月后溢出。在Unix Sixth Edition(1975)中,计数被改为自1970-01-01 00:00:00 UTC以来的秒数,这是每个类Unix系统今天仍在使用的纪元。这个选择是任意的,工程师们需要一个接近他们工作时代的整数日期。POSIX.1(1988)将该定义编纂为官方标准,而POSIX.1-2017(IEEE Std 1003.1-2017),即当前版本,仍将time_t定义为自纪元以来的秒数,但要注意POSIX时间假装闰秒不存在。ISO 8601(1988,当前2019)标准化了可读格式2026-05-13T14:30:00Z,而RFC 3339(2002年7月)将其缩小为明确的互联网日期时间配置文件。JavaScript的Date.now()返回自纪元以来的毫秒,因为该规范于1995年编写,当时已经对亚秒精度有需求;大多数数据库和Unix实用工具仍使用整秒。

2038年问题(以及它现在为什么重要)

32位有符号的time_t最多可表示2,147,483,647秒,这将在2038年1月19日星期二UTC 03:14:07到达。一秒钟后,计数器回绕到−2,147,483,648,大多数软件将其解释为1901年12月13日。这与Y2K是同一类bug,但由整数宽度引起,而不是日期格式。解决方案是使用64位time_t(将回绕推到大约公元2920亿年)。大多数64位Linux系统已经默认使用64位time_t;Linux 5.6(2020年3月)使64位time_t在32位架构上也可用。剩余的风险存在于嵌入式系统、旧的二进制文件格式和32位网络协议中。网络时间协议(NTP)已在2036年回绕,因为它使用自1900年以来的无符号32位计数,NTPv4添加了一个时代号来扩展它。如果你交付处理日期的软件,在2038年之前审查你的栈,特别是类型为INT(11)的SQL列或带有long时间字段的旧C代码。

你将遇到的时间戳格式

此工具发挥其作用之处

让团队花费数小时的错误

更多常见问题

为什么选择1970-01-01作为纪元?

便利。20世纪70年代早期的Unix版本想要一个不会在合理工作生命周期内溢出的纪元。1970-01-01是一个接近开发时代的整数日期,从那里开始的32位秒计数器舒适地达到2038年。这个选择现在被刻在POSIX.1-2017 §4.16中,是软件中最稳定的跨平台协议之一。日期没有固有意义,没有历史事件,没有天文锚点,只是大家都同意的一个任意锚点。

UTC、GMT和Zulu时间有什么区别?

出于软件目的,它们指代相同的挂钟时间。UTC(协调世界时)是现代标准,由原子钟和BIPM定义。GMT(格林尼治标准时间)是较旧的英国天文标准,在原子计时之前是事实上的世界参考。Zulu时间是UTC的北约/军用指示符,写为ISO 8601中的Z后缀(2026-05-13T14:30:00Z)。UTC和GMT最多可相差0.9秒,因为UTC通过闰秒被引导保持接近UT1(平太阳时),但没有不直接使用UT1的应用程序会注意到。

为什么有时显示1970,而我期望的是其他东西?

两个常见原因。首先,时间戳是毫秒但被传递给期望秒的函数,反之亦然,给出一个偏差1000倍的日期。其次,值是0NaN,这两者大多数日期库都呈现为1970-01-01T00:00:00Z。检查原始整数宽度:10位是秒,13位是毫秒,16位是微秒,19位是纳秒。

此工具会处理1970年之前日期的负时间戳吗?

是的。new Date(-86400000)返回1969-12-31T00:00:00Z。JavaScript的Date可以表示从−271821-04-20到+275760-09-13的任何时刻,即大约从纪元开始的±100亿天。在该范围之外,API返回Invalid Date。对于历史日期,还要注意儒略-格里高利转换(天主教国家1582年,英国1752年,希腊晚至1923年)其中日历日期跳跃了10到13天;日期库在如何处理这一点上各不相同。

我的时间戳数据会被发送到任何地方吗?

不会。所有转换都在浏览器内的JavaScript中运行。该页面从不POST你输入的任何值。在DevTools中打开网络选项卡并转换一个时间戳,你将看到转换期间零出站请求。对于带有时间戳声明的令牌、内部日志行或任何你不会粘贴到托管服务的内容都是安全的。

相关工具

免费 Unix 时间戳转换器 日期计算器,免费 免费时长计算器 免费倒计时计时器