ByteCompress

时间戳转换器

将Unix时间戳(自Unix纪元以来的秒或毫秒)转换为人类可读的日期时间字符串,并将日期转换回Unix时间戳。支持UTC和本地时区。

0 chars
FreeClient-sideNo signup

Unix时间从1970年1月1日00:00:00 UTC开始计数 - Unix纪元。每个Unix时间戳是自那一刻起经过的秒数(或在许多现代系统中为毫秒)。时间戳在编程、数据库和API中广泛使用,因为它们与时区无关,可以作为整数排序,并且在算术上容易比较。将1711843200作为原始数字读取并没有任何意义。该转换器瞬间将其转换为2024-03-31T00:00:00.000Z,使用ISO 8601 - 国际日期标准。所有转换在您的浏览器中本地运行。

如何使用此工具

  1. 时间戳转日期: 输入一个以秒或毫秒为单位的Unix时间戳 - 工具将显示UTC和您的本地时区的日期。
  2. 日期转时间戳: 使用日期选择器输入日期和时间,然后复制结果的Unix时间戳(秒和毫秒)。
  3. 点击现在以填入当前时间戳以供参考。
  4. 使用格式选择器以ISO 8601、RFC 2822或人类可读格式显示日期。

理解Unix时间戳

秒与毫秒

有两种广泛使用的约定。Unix时间以秒为单位(到2024年为10位数字,例如,1711843200)由POSIX API、C/C++ time()、Python的time.time()和大多数服务器端系统使用。Unix时间以毫秒为单位(13位数字,例如,1711843200000)由JavaScript的Date.now()、Java的System.currentTimeMillis()和许多Web API使用。快速规则:10位数字表示秒;13位数字表示毫秒。最大有效的32位有符号整数时间戳是2147483647(秒),对应于2038年1月19日 - 这是旧系统的2038年问题。

ISO 8601格式

ISO 8601是日期和时间表示的国际标准。完整的UTC格式为YYYY-MM-DDTHH:mm:ss.sssZ,其中T分隔日期和时间,Z表示UTC(Zulu时间)。ISO 8601是API响应和数据交换的推荐格式,因为它明确、按字典顺序可排序(字符串顺序与时间顺序一致),并且在所有主要编程语言中都可解析。

示例

时间戳转日期

输入(秒):       1711843200
UTC日期(ISO 8601):   2024-03-31T00:00:00.000Z
RFC 2822:              Sun, 31 Mar 2024 00:00:00 +0000
人类可读(UTC):  2024年3月31日星期日 12:00:00 AM UTC

日期转时间戳

输入:                 2024-03-31 00:00:00 UTC
Unix(秒):        1711843200
Unix(毫秒):   1711843200000

常见时间戳格式

  • Unix秒(POSIX): 1711843200 - 10位数字,用于C、Python、Go、大多数系统API
  • Unix毫秒: 1711843200000 - 13位数字,用于JavaScript、Java、许多REST API
  • ISO 8601 UTC: 2024-03-31T00:00:00Z - 推荐用于API响应和数据存储
  • 带偏移的ISO 8601: 2024-03-31T03:00:00+03:00 - 包含时区偏移以确保本地时间明确
  • RFC 2822: Sun, 31 Mar 2024 00:00:00 +0000 - 用于电子邮件头和HTTP Date
  • Unix纪元参考: 0 = 1970-01-01T00:00:00Z

最佳实践

  • 在数据库中以UTC存储时间戳 - 仅在显示层转换为本地时间
  • 对API响应使用ISO 8601 - 它明确且在所有语言中可解析
  • 对于新系统,优先使用毫秒而非秒,以避免浮点运算中的亚秒精度
  • 将32位时间戳存储迁移到64位,以避免2038年溢出问题

对于嵌入时间戳的唯一标识符,UUID v7(RFC 9562)将Unix毫秒时间戳与随机位结合,生成可排序的唯一ID - 当不需要排序时,请使用UUID生成器生成UUID v4。对于调试包含时间戳的JSON响应,JSON格式化器使嵌套的时间戳字段可读。

常见问题

什么是Unix时间戳?

Unix时间戳是自Unix纪元(1970年1月1日00:00:00 UTC)以来经过的秒数,不包括闰秒。它与时区无关,是一个简单的整数,易于比较和排序。Unix时间戳是操作系统、数据库和编程语言中时间的通用内部表示。

如何判断时间戳是以秒还是毫秒为单位?

计算数字。到2024年,Unix时间戳以秒为单位为10位数字(例如,1700000000)。以毫秒为单位的时间戳为13位数字(例如,1700000000000)。如果数字小于约100亿,则可能是秒。纳秒精度的时间戳(用于一些高频系统)为19位数字。

什么是2038年问题?

以32位有符号整数存储Unix时间戳的系统只能表示最大值为2,147,483,647。这个最大值对应于2038年1月19日03:14:07 UTC。此后增加一秒会导致整数溢出为一个大负数,破坏日期计算。现代64位系统在大约2920亿年内是安全的。

转换器使用我的本地时区吗?

是的。该工具同时显示UTC和您的本地时间。本地时间由浏览器的时区设置决定,该设置反映了操作系统配置的时区。如果您的系统时钟配置错误或您在旅行,本地时间显示将反映该设置。

如何在代码中获取当前Unix时间戳?

JavaScript: Math.floor(Date.now() / 1000) 获取秒,或 Date.now() 获取毫秒。Python: import time; int(time.time())。Go: time.Now().Unix() 获取秒,time.Now().UnixMilli() 获取毫秒。PostgreSQL: EXTRACT(EPOCH FROM NOW())。Bash: date +%s。