Unix 时间戳转换器

将 Unix 时间戳转换为人类可读的日期,并支持反向转换

当前 Unix 时间戳

1774458438

Wed, 25 Mar 2026 17:07:18 GMT

什么是 Unix 时间戳?

Unix 时间戳(也称为 epoch 时间或 POSIX 时间)是自 1970 年 1 月 1 日 00:00:00 UTC 起经过的秒数。这个日期称为 Unix epoch。每过一秒,计数器加一,从而为每个时刻赋予一个唯一的整数表示。Unix 时间戳转换器在此整数与人类可读日期格式(如 ISO 8601、RFC 2822 或特定区域格式)之间进行转换。

Unix 时间戳是计算机中表示时间的标准方式。数据库将 created_at 和 updated_at 列存储为整数或毫秒时间戳。API 响应中的时间戳用于缓存头部(Expires、Last-Modified)、JWT 声明(iat、exp、nbf)以及事件日志。nginx、syslog 和应用框架生成的日志文件均使用 epoch 时间。该格式无歧义,因为它始终表示 UTC,无需处理时区或夏令时偏移。

手动在时间戳和日期之间转换容易出错。像 1711324800 这样的值从外观上看不出它代表的日期。本工具将 Unix 时间戳转换为可读日期,并支持反向转换。无论是读取 JWT exp 声明、调试数据库查询,还是检查日志时间戳,它都能自动识别 10 位(秒)和 13 位(毫秒)的值。

为什么使用这个时间戳转换器?

从日志、数据库或 API 响应中读取原始 Unix 时间戳,要么需要记住 epoch 计算方法,要么需要编写临时代码。本转换器在浏览器中即可完成转换,无需任何配置。无论是解码 JWT 过期时间、审查日志条目,还是设置数据库 TTL,结果一键即得。工具会自动检测输入是 10 位秒级时间戳还是 13 位毫秒级时间戳,无需手动除以 1000。所有处理在浏览器本地运行,数据不会离开您的设备,来自内部系统和敏感日志的时间戳保持私密。

即时转换
输入时间戳或选择日期,立即查看结果。无需提交表单,无需刷新页面。支持秒和毫秒两种格式。
🔒
隐私优先处理
所有转换使用 JavaScript 内置的 Date 对象在浏览器中运行。数据不会离开您的设备,来自内部系统的时间戳保持私密。
🔄
双向转换
将 Unix 时间戳转换为日期,或将日期转换为时间戳。在任意方向输入值,即可获得对应的结果,无需切换工具。
🌐
多种输出格式
同时以 UTC、本地时间、ISO 8601 和相对时间显示时间戳。一键复制任意格式。

时间戳转换器使用场景

前端开发
解码 REST API 响应中的时间戳,验证日期显示在不同时区下渲染正确。检查 API 返回的是秒还是毫秒。
后端工程
调试查询时转换数据库时间戳。在迁移或时区变更后,验证 created_at、updated_at 和 expires_at 的值是否与预期日期匹配。
DevOps 与 SRE
将日志文件、监控面板(Grafana、Datadog)和告警系统中的 epoch 值转换为可读时间,精确定位故障发生时间或部署完成时间。
QA 与测试
为测试数据生成特定时间戳。验证令牌过期、缓存 TTL 和定时任务等时间相关功能是否在正确时刻触发。
数据工程
检查从 PostgreSQL、MySQL 或数据仓库导出的原始数据时转换时间戳列。确认 ETL 管道正确保留了时区信息。
学习与教育
了解计算机如何在内部表示时间。实验 Y2038 问题、1970 年前日期的负时间戳以及毫秒精度等边界情况。

Unix 时间戳参考表

下表列出了常见的 Unix 时间戳及其对应的日期,可用于快速验证、测试以及了解 32 位和 64 位时间戳的范围。

时间戳日期(UTC)说明
0Jan 1, 1970 00:00:00 UTCUnix epoch start
86400Jan 2, 1970 00:00:00 UTCExactly 1 day
946684800Jan 1, 2000 00:00:00 UTCY2K
1000000000Sep 9, 2001 01:46:40 UTC10-digit milestone
1234567890Feb 13, 2009 23:31:30 UTCAscending digits
1700000000Nov 14, 2023 22:13:20 UTCRecent 10-digit
2000000000May 18, 2033 03:33:20 UTCNext 10-digit milestone
2147483647Jan 19, 2038 03:14:07 UTCY2038 (signed 32-bit max)
4102444800Jan 1, 2100 00:00:00 UTCNext century

日期与时间格式对比

不同系统和标准使用不同的字符串格式表示同一时刻。下表对比了 API、日志和数据库中最常见的格式。

格式示例说明
Unix (seconds)1711324800Integer, no timezone info
Unix (milliseconds)1711324800000Used by JavaScript Date.now()
ISO 86012024-03-25T00:00:00ZMachine-readable, includes timezone
RFC 2822Mon, 25 Mar 2024 00:00:00 +0000Email and HTTP headers
UTC stringMon, 25 Mar 2024 00:00:00 GMTDate.prototype.toUTCString()
Human readableMarch 25, 2024, 12:00:00 AMLocale-dependent, display only

代码示例

在您使用的编程语言中实现 Unix 时间戳与日期之间的转换。每个示例均展示两个方向:时间戳转日期和日期转时间戳。

JavaScript (browser / Node.js)
// Current Unix timestamp in seconds
Math.floor(Date.now() / 1000)  // → 1711324800

// Unix timestamp to Date object
const date = new Date(1711324800 * 1000)
date.toISOString()             // → "2024-03-25T00:00:00.000Z"
date.toUTCString()             // → "Mon, 25 Mar 2024 00:00:00 GMT"

// Date string to Unix timestamp
Math.floor(new Date('2024-03-25T00:00:00Z').getTime() / 1000)
// → 1711324800

// Millisecond timestamps (common in JS APIs)
Date.now()                     // → 1711324800000 (ms)
Date.parse('2024-03-25')       // → 1711324800000 (ms)
Python
import time
from datetime import datetime, timezone

# Current Unix timestamp
int(time.time())                                    # → 1711324800

# Unix timestamp to datetime
dt = datetime.fromtimestamp(1711324800, tz=timezone.utc)
dt.isoformat()                                      # → '2024-03-25T00:00:00+00:00'
dt.strftime('%Y-%m-%d %H:%M:%S %Z')                 # → '2024-03-25 00:00:00 UTC'

# Datetime string to Unix timestamp
dt = datetime.fromisoformat('2024-03-25T00:00:00+00:00')
int(dt.timestamp())                                  # → 1711324800

# Parse RFC 2822 dates (from email headers)
from email.utils import parsedate_to_datetime
parsedate_to_datetime('Mon, 25 Mar 2024 00:00:00 +0000').timestamp()
# → 1711324800.0
Go
package main

import (
    "fmt"
    "time"
)

func main() {
    // Current Unix timestamp
    now := time.Now().Unix() // → 1711324800

    // Unix timestamp to time.Time
    t := time.Unix(1711324800, 0).UTC()
    fmt.Println(t.Format(time.RFC3339))
    // → 2024-03-25T00:00:00Z

    // Parse a date string to Unix timestamp
    parsed, _ := time.Parse(time.RFC3339, "2024-03-25T00:00:00Z")
    fmt.Println(parsed.Unix())
    // → 1711324800

    // Millisecond timestamp
    ms := time.Now().UnixMilli() // → 1711324800000
    fmt.Println(now, ms)
}
CLI (date / bash)
# Current Unix timestamp
date +%s                                    # → 1711324800

# Convert timestamp to human-readable date (GNU date)
date -d @1711324800                         # → Mon Mar 25 00:00:00 UTC 2024

# Convert timestamp to ISO 8601
date -d @1711324800 --iso-8601=seconds      # → 2024-03-25T00:00:00+00:00

# macOS (BSD date) — slightly different flags
date -r 1711324800                          # → Mon Mar 25 00:00:00 UTC 2024

# Date string to timestamp (GNU date)
date -d "2024-03-25 00:00:00 UTC" +%s       # → 1711324800

常见问题

Unix 时间戳中秒和毫秒有什么区别?
以秒为单位的 Unix 时间戳是 10 位整数(直到 2286 年 11 月),而毫秒时间戳为 13 位。JavaScript 的 Date.now() 返回毫秒。大多数 Unix 命令行工具和 Python 的 time.time() 返回秒。两者之间的转换:秒乘以 1000 得毫秒,毫秒除以 1000 并取整得秒。
什么是 2038 年问题?
将 Unix 时间戳存储为有符号 32 位整数的系统将在 2038 年 1 月 19 日 03:14:07 UTC 发生溢出。有符号 32 位整数的最大值为距 epoch 2,147,483,647 秒。超出后,值将回绕为负数,系统会将其解释为 1901 年 12 月的某个日期。现代 64 位系统使用 64 位整数,不受此问题影响。
如何在 JavaScript 中将 Unix 时间戳转换为日期?
通过将时间戳乘以 1000(因为 JavaScript 使用毫秒)创建新的 Date 对象:new Date(1711324800 * 1000)。然后调用 .toISOString()、.toUTCString() 或 .toLocaleString() 获取所需格式。反向操作使用 Math.floor(new Date('2024-03-25').getTime() / 1000)。
Unix 时间戳能表示 1970 年以前的日期吗?
可以。Unix epoch(1970 年 1 月 1 日)之前的日期用负整数表示。例如,1969 年 12 月 31 日 23:59:59 UTC 对应时间戳 -1。大多数现代编程语言能正确处理负时间戳,但部分旧系统和数据库可能不支持。
为什么 API 使用 Unix 时间戳而非日期字符串?
Unix 时间戳与时区无关、紧凑(单个整数对比 25 个以上字符的字符串),且易于比较。对整数进行排序、比较和计算时间差比解析日期字符串更快。它还避免了 MM/DD/YYYY 与 DD/MM/YYYY 等区域相关格式带来的歧义。
如何从命令行获取当前 Unix 时间戳?
在 Linux 和 macOS 上,运行 date +%s 以秒为单位打印当前时间戳。在 Windows PowerShell 上,使用 [DateTimeOffset]::UtcNow.ToUnixTimeSeconds()。两者均返回自 Unix epoch 起的整数秒数。在 Linux 上要获取毫秒精度,使用 date +%s%3N 直接附加毫秒部分。
时间戳中 UTC 和 GMT 有什么区别?
在计算机应用中,UTC 和 GMT 实际上指的是同一时间。UTC(协调世界时)是由原子钟定义的现代标准,而 GMT(格林威治标准时间)是较旧的天文标准。Unix 时间戳始终基于 UTC。格式化日期字符串中可能同时出现两种标签,但其底层值是相同的。