时间戳转换器
将Unix时间戳(自Unix纪元以来的秒或毫秒)转换为人类可读的日期时间字符串,并将日期转换回Unix时间戳。支持UTC和本地时区。
Unix时间从1970年1月1日00:00:00 UTC开始计数 - Unix纪元。每个Unix时间戳是自那一刻起经过的秒数(或在许多现代系统中为毫秒)。时间戳在编程、数据库和API中广泛使用,因为它们与时区无关,可以作为整数排序,并且在算术上容易比较。将1711843200作为原始数字读取并没有任何意义。该转换器瞬间将其转换为2024-03-31T00:00:00.000Z,使用ISO 8601 - 国际日期标准。所有转换在您的浏览器中本地运行。
如何使用此工具
- 时间戳转日期: 输入一个以秒或毫秒为单位的Unix时间戳 - 工具将显示UTC和您的本地时区的日期。
- 日期转时间戳: 使用日期选择器输入日期和时间,然后复制结果的Unix时间戳(秒和毫秒)。
- 点击现在以填入当前时间戳以供参考。
- 使用格式选择器以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- 用于电子邮件头和HTTPDate头 - 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。