123问免费工具与知识服务
123问工具大全 工具大全 实用工具 时间戳转换

⏱ 时间戳转换

Unix Timestamp · 秒/毫秒 · 多时区 · 实时

当前时间戳(实时刷新)
-
秒级(10位)
-
毫秒级(13位)
-

时间戳 → 日期

转换结果

日期 → 时间戳

转换结果

各语言获取当前时间戳

语言秒级毫秒级
PHPtime()round(microtime(true)*1000)
JavaScriptMath.floor(Date.now()/1000)Date.now()
Pythonint(time.time())int(time.time()*1000)
JavaInstant.now().getEpochSecond()System.currentTimeMillis()
Gotime.Now().Unix()time.Now().UnixMilli()
MySQLUNIX_TIMESTAMP()UNIX_TIMESTAMP(NOW(3))*1000
C#DateTimeOffset.UtcNow.ToUnixTimeSeconds()DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()

时间戳转换常见问题

什么是Unix时间戳?

Unix时间戳是从1970年1月1日00:00:00 UTC到指定时刻的秒数(或毫秒数)。它是跨平台统一的时间表示方式,不受时区影响。32位系统最大到2038年1月19日(约21亿秒),64位系统无此限制。

秒级和毫秒级时间戳怎么区分?

秒级时间戳是10位数字(如1690000000),毫秒级是13位(如1690000000000)。本工具自动识别位数。Java/JavaScript默认用毫秒,PHP/Python/MySQL默认用秒。

为什么时间戳转出的日期有时区差异?

时间戳本身是UTC绝对时间,转成本地日期时需加时区偏移。北京时间是UTC+8。本工具默认按北京时间显示,可切换UTC。如PHP用date()默认服务器时区,gmdate()输出UTC。

如何获取当前时间戳?

PHP: time()(秒)或microtime(true)(微秒浮点);JavaScript: Date.now()(毫秒)或Math.floor(Date.now()/1000)(秒);Python: int(time.time());MySQL: UNIX_TIMESTAMP()。本工具顶部实时显示当前时间戳。

2038年问题是什么?

32位系统用有符号32位整数存秒数,最大到2147483647,对应2038年1月19日03:14:07 UTC,之后会溢出出错,即"2038年问题"。现已逐步用64位系统解决。现代服务器和PHP基本都是64位,您不太会遇到。

时间戳是-1或很大负数是怎么回事?

负数时间戳表示1970年之前的时间,如-1对应1969年12月31日23:59:59 UTC。极大数字通常是把毫秒当成秒,或把时间戳×1000了。输入时先确认位数的秒/毫秒,本工具会自动识别。

为什么同一个时间戳在不同网站显示不一样?

因为时区不同。时间戳本身是全球统一的UTC绝对时刻,但显示成"本地日期"时要加时区偏移。北京UTC+8,所以同一个时间戳在北京显示的时间比UTC早8小时。本工具可切换北京/UTC/纽约/东京查看。

时间戳和日期能互相精确还原吗?

秒级时间戳还原到"秒"是精确的,但无法还原到毫秒(因为秒级本身丢了毫秒信息)。毫秒级时间戳可精确到毫秒。若原始数据是毫秒而您按秒处理,日期会差很大,务必先判断位数。

Excel里的大数字时间戳怎么处理?

Excel中日期的本质是"序列号"(1900年起的第几天),不是Unix时间戳,两者别混用。若把Unix时间戳粘贴进Excel变成科学计数法大数,需除以1000并设置格式,或用公式转换。

时间戳转换 - 示例演示

示例一:常见的演示时间戳

输入:时间戳1690000000(秒级10位),北京时间
结果:对应2023-07-22 08:26:40 北京时间,星期,第几周等完整信息
很多教程和接口文档都用这个示例值,可以拿它验证自己程序里的转换是否正确。

示例二:毫秒级 vs 秒级

输入:1690000000(秒)和1690000000000(毫秒)
结果:两个都对应同一个时刻,只是精度不同;若把毫秒当秒用,日期会差约5万多年
Java/JS的Date默认毫秒,PHP/Python默认秒,接口对接时最容易在这踩坑。

示例三:跨时区校验

输入:同一时间戳,分别看北京时间(UTC+8)和UTC
结果:北京时间比UTC多8小时,如UTC的00:00对应北京08:00
跨国接口、日志排错时,先确认日志用的是哪个时区,否则时间对不上。

时间戳转换深度解读

时间戳为什么从1970年开始?

Unix系统最早在1970年1月1日定义了自己的"世界时"起点(epoch),称为Unix纪元。时间戳就是从这一刻起经历的秒数。

这个约定被几乎所有主流语言和数据库沿用,成为事实标准。注意:时间戳是"时刻",不含时区概念,全世界同一个时刻时间戳相同。

常见时间单位对应秒数
单位秒数
1分钟60秒
1小时3600秒
1天86400秒
1周604800秒
1年(约)31536000秒
2038年上限2147483647秒

秒级和毫秒级别再搞混

字段位数是最直观的判别:10位是秒,13位是毫秒,16位是微秒。接口文档务必先确认。

  • 秒级:10位,如 1690000000
  • 毫秒级:13位,如 1690000000000
  • 微秒级:16位,Python datetime常用
  • 纳秒级:19位,Go/Python3.7+ 可用

时区怎么影响时间戳显示

时间戳转日期时,UTC+8的地区要加8小时才是本地时间。这不改变时间戳本身,只改变显示。

北京时间 = UTC时间 + 8小时。做日志分析、报表时,明确"存的是UTC还是本地"很重要,台湾、香港、新加坡也都在UTC+8。

各语言时间戳的坑

  • JavaScript Date.now() 是毫秒,若存库按秒会×1000
  • PHP time() 是秒,microtime(true) 是带小数的秒
  • Python time.time() 是带小数的秒,datetime.timestamp() 同理
  • MySQL UNIX_TIMESTAMP() 是秒,TIMESTAMP类型存的是UTC

时间戳转换参考数据

各语言获取当前时间戳对照

语言秒级毫秒级
PHPtime()round(microtime(true)*1000)
JavaScriptMath.floor(Date.now()/1000)Date.now()
Pythonint(time.time())int(time.time()*1000)
JavaInstant.now().getEpochSecond()System.currentTimeMillis()
Gotime.Now().Unix()time.Now().UnixMilli()
MySQLUNIX_TIMESTAMP()UNIX_TIMESTAMP(NOW(3))*1000

全球主要时区与UTC偏移

城市时区相对UTC
北京UTC+8+8小时
东京UTC+9+9小时
首尔UTC+9+9小时
伦敦UTC+00
纽约UTC-5/UTC-4(夏令时)-5/-4小时
洛杉矶UTC-8/UTC-7(夏令时)-8/-7小时

使用说明

使用方法

1. 顶部实时显示当前时间戳(秒/毫秒),可一键复制。

2. 在"时间戳→日期"区输入时间戳,自动识别秒/毫秒,选择时区后显示对应日期。

3. 在"日期→时间戳"区选择日期时间,选择时区后输出秒级与毫秒级时间戳。

4. 底部附常见编程语言时间戳获取代码。

分享工具: Facebook Twitter 微博 复制链接