logo
GeekFormat

Unix 时间戳转换

当前 Unix 时间戳
1784577046
2026-07-21 03:50:46 (UTC)

代码示例

JavaScript
// 获取当前时间戳 new Date(时间戳转日期).toLocaleString()
Python
import time time.time() # 获取当前时间戳 time.ctime(1800000000) # 时间戳转日期
Go
import "time" time.Now().Unix() // 获取当前时间戳 time.Unix(1800000000, 0).String()
Bash
# 获取当前时间戳 date +%s # 时间戳转日期 date -d @1800000000

Unix 时间戳是自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的秒数(不计闰秒)。大多数 Unix 系统将时间戳存储为 32 位有符号整数,在 2038 年 1 月 19 日会发生溢出(2038 年问题)。

免费在线 Unix 时间戳转换工具,支持秒/毫秒/微秒双向互转,自动识别时间戳单位,UTC与本地时区一键切换,内置多语言代码示例,打开即用适合开发调试和日志排查。

相关推荐

什么是 Unix 时间戳?

Unix 时间戳(Unix Timestamp),也叫 Epoch Time、POSIX Time,是一种用数字表示时间的方式:从协调世界时(UTC)1970年1月1日 00:00:00 起到某一时刻所经过的总秒数(不计算闰秒)。起点 1970-01-01 00:00:00 UTC 被称为「Unix 纪元」(Unix Epoch),此时的时间戳为0。

时间戳的最大优点是与时区无关——同一时刻在全球任何地方生成的时间戳都是同一个数字,不存在时区转换问题。因此它被广泛应用于:数据库记录的创建/更新时间、分布式系统的日志追踪(Trace/Span时间)、API接口的时间参数、JWT Token的过期时间、缓存的过期时间(TTL)、文件系统的修改时间等。

不同编程语言和系统对时间戳精度处理不同:C/Unix/Python默认使用秒级(10位),JavaScript/Java使用毫秒级(13位),部分高精度系统(如金融交易、科学计算)使用微秒级(16位)甚至纳秒级(19位)。本工具覆盖最常用的秒、毫秒、微秒三种精度。

适用场景

  • 开发调试时将日志中的时间戳转换为可读日期时间,快速定位问题发生时刻
  • 接口联调时对照请求/响应中的时间戳字段,确认时间是否正确传递
  • 数据库查询时将业务时间转换为时间戳,用于SQL时间范围条件
  • 服务器运维时对比UTC时间戳与本地时间,排查跨时区部署的时间相关问题
  • 编写脚本时快速复制各语言获取时间戳的代码片段,无需查阅文档
  • 将历史日期(1970年前)或未来日期转为时间戳,用于测试边界场景

使用方法

  1. 页面顶部显示实时跳动的当前Unix时间戳,可直接点击复制
  2. 要将时间戳转为日期:在「时间戳→日期」标签页输入时间戳,工具自动识别单位(秒/毫秒/微秒)
  3. 选择UTC或本地时区,转换结果即时显示,可点击复制按钮复制日期字符串
  4. 要将日期转为时间戳:切换到「日期→时间戳」标签页,在年/月/日/时/分/秒输入框填入目标时间
  5. 选择时区后秒级时间戳即时显示,一键复制用于代码或查询

功能特点

  • 自动识别单位:输入时间戳自动判断是秒/毫秒/微秒,无需手动选择,粘贴即用
  • 三级精度支持:秒(10位)、毫秒(13位)、微秒(16位)全覆盖,满足不同系统和语言需求
  • UTC/本地时区切换:服务器日志用UTC,业务时间用本地,一键切换对照排查
  • 逐字段日期输入:年/月/日/时/分/秒独立输入框,支持日期转时间戳,无需记忆日期格式
  • 实时时间戳显示:页面顶部实时跳动当前秒级时间戳及UTC日期,一键复制
  • 多语言代码片段:内置JavaScript/Python/Go/Bash获取和转换时间戳代码,一键复制
  • 支持负数时间戳:可转换1920年至2100年范围内的任意日期,覆盖历史和未来时间
  • 纯前端计算:所有转换在浏览器本地完成,时间戳不上传服务器,安全可靠

代码示例

JavaScript 获取和转换时间戳

javascript

浏览器和Node.js中获取当前秒级/毫秒级时间戳,以及将时间戳转换为本地可读时间的常用方法。

// 获取当前秒级时间戳
const tsSec = Math.floor(Date.now() / 1000);
console.log(tsSec); // 例如 1700000000

// 获取当前毫秒级时间戳
const tsMs = Date.now();
console.log(tsMs); // 例如 1700000000000

// 秒级时间戳转本地可读时间
const date = new Date(tsSec * 1000);
console.log(date.toLocaleString('zh-CN'));
// "2023/11/15 06:13:20"

// 毫秒级时间戳转ISO格式
console.log(new Date(tsMs).toISOString());
// "2023-11-14T22:13:20.000Z"

Python 时间戳处理

python

使用Python标准库time和datetime模块获取和转换时间戳,处理时区转换。

import time
from datetime import datetime, timezone

# 获取当前秒级时间戳
ts = int(time.time())
print(ts)  # 1700000000

# 时间戳转本地时间字符串
print(time.ctime(ts))
# 'Wed Nov 15 06:13:20 2023'

# 时间戳转格式化时间
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(ts)))
# '2023-11-15 06:13:20'

# 时间戳转UTC时间
print(datetime.fromtimestamp(ts, tz=timezone.utc))
# 2023-11-14 22:13:20+00:00

Linux/macOS 命令行操作时间戳

bash

在Shell中获取当前时间戳和转换时间戳的常用命令,注意Linux和macOS的date命令参数有差异。

# 获取当前秒级时间戳(Linux/macOS通用)
date +%s

# 时间戳转日期(Linux GNU date)
date -d @1700000000
# "Wed Nov 15 06:13:20 CST 2023"

# 时间戳转日期(macOS BSD date)
date -r 1700000000

# 时间戳转UTC日期(Linux)
date -u -d @1700000000
# "Tue Nov 14 22:13:20 UTC 2023"

# 指定格式输出
date -d @1700000000 '+%Y-%m-%d %H:%M:%S'

常见问题

什么是 Unix 时间戳?

Unix 时间戳(Unix Timestamp,又称 Epoch Time、POSIX Time)是从协调世界时(UTC)1970年1月1日00:00:00起至某一时刻的总秒数(不考虑闰秒)。例如 1700000000 对应 2023-11-14 22:13:20 UTC。它不受时区影响,在全球任何地方生成的同一时刻的时间戳都是相同的,因此被广泛用于跨系统时间记录、日志追踪、接口传参和数据库存储。

秒级、毫秒级、微秒级时间戳怎么区分?

按位数区分:10位数字是秒级(精度到秒,如1700000000),13位数字是毫秒级(精度到千分之一秒,如1700000000000),16位数字是微秒级(精度到百万分之一秒,如1700000000000000)。本工具会自动识别你输入的时间戳位数,无需手动选择单位——输入后即可自动判断并转换。如果你粘贴的时间戳前后有空格,工具也会自动修剪后正确识别。

为什么日志里的时间戳和本地时间差了8小时?

这是因为 Unix 时间戳本身是UTC时区的,而中国使用UTC+8时区。如果直接按本地时区解析UTC时间戳,就会产生时差。本工具提供UTC和本地时区两种切换选项:排查服务器日志(通常用UTC)时选UTC,看本地业务时间时选本地时区,一键切换对照。

JavaScript 中如何获取和转换时间戳?

获取当前秒级时间戳用 `Math.floor(Date.now() / 1000)`,毫秒级用 `Date.now()`;将时间戳转可读时间用 `new Date(ts * 1000).toLocaleString()`(秒级需乘1000,毫秒级直接传入)。工具页面底部内置了JavaScript、Python、Go、Bash等常用语言的代码片段,可直接复制使用。

时间戳可以是负数吗?代表什么?

可以。负数时间戳表示1970年1月1日之前的时间,例如 -1 对应 1969-12-31 23:59:59 UTC。本工具支持输入负数时间戳,转换范围覆盖1920年到2100年,满足历史日期和未来日期的转换需求。

2038年问题是什么?会影响使用吗?

2038年问题(Year 2038 Problem)指使用32位有符号整数存储秒级时间戳的系统,在2038年1月19日03:14:07 UTC后会溢出导致时间变为负数,引发系统错误。现代系统已普遍使用64位整数(可表示到2920亿年后),JavaScript使用64位浮点数存储时间戳(精确到毫秒可安全表示到285616年),本工具在浏览器中运行,不受2038年问题影响。

为什么在线转换比命令行更方便?

命令行(如Linux的date命令)需要记住参数格式,跨平台参数不一致(macOS的date和Linux的date参数差异很大)。本工具打开即用,自动识别单位,提供可视化日期输入框(年/月/日/时/分/秒逐字段输入,无需记忆日期格式),支持时区一键切换,还内置多语言代码示例,在浏览器中即可完成转换,无需切换终端。

术语表

Unix 时间戳
从UTC 1970年1月1日00:00:00起经过的秒数,10位数字,与时区无关,全球统一。
Epoch Time
Unix时间戳的别名,指从Unix纪元(1970-01-01 UTC)起算的时间。
秒级时间戳
精度到秒的时间戳,10位数字(如1700000000),是Unix/Python/C等语言的默认精度。
毫秒级时间戳
精度到千分之一秒的时间戳,13位数字(如1700000000000),JavaScript/Java的默认精度。
微秒级时间戳
精度到百万分之一秒的时间戳,16位数字(如1700000000000000),用于高精度系统。
UTC
协调世界时(Coordinated Universal Time),全球时间标准,是时区计算的基准,与格林威治标准时间(GMT)基本一致。
时区偏移
本地时间与UTC的差值,如中国北京时间是UTC+8(比UTC快8小时),美国东部是UTC-5(标准时间)。
ISO 8601
国际标准化组织的日期时间表示格式,如2024-01-15T08:30:00+08:00,是API传参的标准格式。
2038年问题
32位有符号整数存储秒级时间戳在2038年1月19日溢出的问题,64位系统和JavaScript不受影响。

常用时间单位换算表

时间单位秒数举例说明
1分钟60短时间缓存、接口超时
1小时3,600Token短期有效期、会话超时
1天86,400每日统计、日报数据
1周604,800周报周期、Cookie有效期
1个月(30.44天)2,629,743月度统计、订阅计费周期
1年(365.24天)31,556,926年度数据、JWT长期Token

各编程语言时间戳获取与转换

语言获取当前时间戳(秒)时间戳转可读时间
JavaScriptMath.floor(Date.now()/1000)new Date(ts*1000).toLocaleString()
Pythonimport time; int(time.time())import time; time.ctime(ts)
JavaSystem.currentTimeMillis()/1000new Date(ts*1000L).toString()
Gotime.Now().Unix()time.Unix(ts, 0).String()
PHPtime()date('Y-m-d H:i:s', ts)
MySQLSELECT UNIX_TIMESTAMP()SELECT FROM_UNIXTIME(ts)
Bash (Linux)date +%sdate -d @ts
Bash (macOS)date +%sdate -r ts

Authoritative References