Unix 时间戳与 ISO 日期时间互转,支持多种格式显示
Unix 时间戳(Unix Timestamp)是指从 1970 年 1 月 1 日 00:00:00 UTC(即 Unix 纪元)开始所经过的秒数或毫秒数。它是一种在计算机系统中广泛使用的时间表示方式,几乎所有编程语言和操作系统都支持 Unix 时间戳。
Unix 时间戳的最大优势在于:它是一个纯数字,不包含任何时区信息,不受夏令时影响,因此非常适合在计算机之间进行时间交换、存储和计算。
Unix 时间戳有两种常见精度:
1705312800。这是最经典的 Unix 时间戳格式,JavaScript 的 Math.floor(Date.now() / 1000)、PHP 的 time()、Python 的 int(time.time()) 都产生秒级时间戳。1705312800000。JavaScript 的 Date.now()、Java 的 System.currentTimeMillis() 返回毫秒级时间戳。精度更高,适用于需要精确计时的场景。在使用时间戳时,务必确认 API 或数据库期望的是秒级还是毫秒级,否则可能导致时间偏差数十年。
ISO 8601 是国际标准化组织制定的日期和时间表示标准(ISO 8601:2004)。它定义了一种全球统一、无歧义的日期时间字符串格式:YYYY-MM-DDTHH:mm:ss.sss±hh:mm。
ISO 8601 格式的优点:
±hh:mm 偏移量(或 Z 表示 UTC)清楚地表明了时区信息。常见的 ISO 8601 格式示例:
2024-01-15T10:30:00.000Z2024-01-15T18:30:00.000+08:002024-01-15RFC 2822 是电子邮件和 HTTP 协议中使用的日期时间格式,例如:Mon, 15 Jan 2024 10:30:00 +0000。虽然不如 ISO 8601 现代和简洁,但在 HTTP 头部(如 Date、Last-Modified)中仍然随处可见。
同一个时刻,在世界不同地方有不同的"当地时间"。例如,当伦敦是 2024-01-15 上午 10:30 时,北京已经是下午 18:30。在软件开发中正确处理时区至关重要:
| 应用场景 | 说明 |
|---|---|
| API 数据交换 | 大多数 REST API 使用 Unix 时间戳或 ISO 8601 传递时间字段,JSON 原生支持这两种格式。 |
| 日志系统 | 日志收集和分析系统(如 Elasticsearch、Grafana)使用时间戳作为事件的时间和排序基准。 |
| 数据库时间字段 | MySQL 的 TIMESTAMP、PostgreSQL 的 TIMESTAMPTZ 在内部都以 UTC 时间戳形式存储。 |
| JWT Token | JWT 的 iat(签发时间)和 exp(过期时间)字段使用秒级 Unix 时间戳。 |
| 缓存过期 | Redis、Memcached 等缓存系统使用时间戳标记缓存项的生存时间。 |
| 分布式系统 | 时间戳常用于分布式事务、消息队列的排序和幂等性保证。 |
| 文件系统 | 文件的创建时间、修改时间都以时间戳形式存储。 |
在日常开发中,开发者经常需要快速完成以下操作:
我们的在线日期时间转换工具提供了一站式解决方案:
无论你是前端工程师、后端工程师还是全栈开发者,这都是你日常工作中不可或缺的时间工具。