日期/时间转换器

一个全面的日期和时间解析器,处理 Unix 时间戳、ISO 8601 日期、RFC 2822 格式、美国/欧洲日期样式、长日期和相对表达式。在格式之间转换,显示相对时间,并提供当前时间戳参考。

规范

常见用例

  • 调试包含时间戳或日期的 API 响应
  • 将日志文件时间戳转换为可读日期
  • 解析不同地区格式的日期
  • 计算事件之间的时间差
  • 为 API 请求生成时间戳
  • 验证令牌过期时间(JWT exp 声明)
  • 为国际团队在日期格式之间转换

功能

  • 自动检测格式:Unix 时间戳、ISO 8601、RFC 2822、美国/欧洲日期等
  • 解析秒、毫秒、微秒或纳秒精度的 Unix 时间戳
  • 处理带或不带时间的 ISO 8601 日期(2024-01-25T12:00:00Z)
  • 解析美国格式(01/25/2024)、欧洲格式(25.01.2024)和长日期(January 25, 2024)
  • 识别相对表达式:now、today、yesterday、tomorrow
  • 显示相对时间("2 小时前"、"3 天后")
  • 过去/未来/今天状态标签
  • 显示星期几、周数、季度和年中第几天
  • 日历指标网格(年中第几周、季度、年中第几天)
  • 附加信息区域(时区、月份天数、闰年)
  • 转换为多种输出格式并提供复制按钮
  • Unix 微秒和纳秒输出
  • 带刷新按钮的当前时间参考卡片

示例

Unix 时间戳(秒)

试试看 →

以秒为单位的标准 Unix 时间戳。

1706188800

Unix 时间戳(毫秒)

试试看 →

JavaScript 风格的毫秒时间戳。

1706188800000

ISO 8601 日期/时间

试试看 →

带时区的标准 ISO 8601 格式。

2024-01-25T12:00:00Z

仅 ISO 8601 日期

试试看 →

不含时间部分的日期。

2024-01-25

美国日期格式

试试看 →

美国常用的月/日/年格式。

01/25/2024

欧洲日期格式

试试看 →

欧洲常用的日.月.年格式。

25.01.2024

长日期

试试看 →

人类可读的日期格式。

January 25, 2024

相对日期

试试看 →

相对表达式被解析为当前时间。

now

提示

  • JavaScript Date.now() 返回毫秒;大多数 Unix 工具使用秒。
  • ISO 8601 格式(2024-01-25T12:00:00Z)是最具可移植性和最明确的格式。
  • 使用 UTC 时间戳进行存储;仅在显示时转换为本地时间。
  • 当日期不明确时(例如 01/02/2024),工具使用上下文线索来确定格式。
  • "2038 年问题"影响使用有符号整数存储 Unix 秒数的 32 位系统。

理解 日期/时间转换器

Unix 时间戳将特定时刻表示为自 Unix 纪元(1970 年 1 月 1 日 00:00:00 UTC)以来经过的秒数。这种简单的整数表示是计算中的通用时间格式,被数据库、API、文件系统、日志文件和操作系统接口使用。该格式是明确的——与人类可读的日期不同,Unix 时间戳始终指向确切的一个时刻,与时区无关。

两种精度级别很常见。秒精度时间戳(10 位数字,如 1738800000)是传统的 Unix 格式,被大多数 Unix API、数据库和 C 语言的 time() 函数使用。毫秒精度时间戳(13 位数字,如 1738800000000)被 JavaScript(Date.now())、Java(System.currentTimeMillis())和许多 Web API 使用。此工具自动检测精度并正确处理两种格式。

ISO 8601 是标准的人类可读日期时间格式:2025-02-05T12:00:00Z。T 分隔日期和时间,Z 表示 UTC(祖鲁时间)。时区偏移使用 +HH:MM 或 -HH:MM 表示法。ISO 8601 是 JSON Schema 所要求的,在 REST API 中广泛使用,并被推荐用于任何日期时间字符串交换。RFC 2822 格式(用于电子邮件头)是另一种常见的文本表示。

时区处理是日期时间错误最常见的来源。开发者经常将 UTC 时间戳与本地时间混淆、错误地应用时区转换,或在没有时区信息的情况下存储本地时间。最佳实践是始终以 UTC 存储和传输时间,仅在显示时转换为本地时间。

将 Unix 时间戳存储为 32 位有符号整数的系统将在 2038 年 1 月 19 日 03:14:07 UTC 溢出,变为代表 1901 年 12 月的负数。这类似于千年虫问题,但对计算基础设施的影响更为广泛。解决方案是使用 64 位整数,将范围扩展到数十亿年。大多数现代系统已经使用 64 位时间,但嵌入式系统和遗留代码可能仍然存在隐患。

在选择以时间戳还是格式化字符串存储日期时,需考虑使用场景。时间戳(整数)适合计算密集型场景,如排序、计算持续时间和比较日期——它们紧凑、明确且与时区无关。ISO 8601 字符串在人类可读性重要、需要保留时区上下文或数据库具有原生日期时间类型时更为可取。例如,PostgreSQL 的 timestamptz 内部以 UTC 存储并在显示时转换。

日期偏差一天几乎总是由时区混淆引起的。2 月 5 日 23:00 UTC 的 UTC 时间戳在 UTC+2 时区已经是 2 月 6 日。在 JavaScript 中,Date() 对纯日期字符串使用本地时间,但对带时区标识符的日期时间字符串使用 UTC。明确指定时区并始终使用 UTC 进行存储和传输可以防止这些微妙的错误。

← 返回所有工具