当前时间戳怎么获取:浏览器、命令行与各语言
当前时间戳就是此刻距离 1970-01-01 00:00:00 UTC 的秒数(或毫秒数),全球同一个值。真正容易出错的不是「怎么取」,而是「取的是秒还是毫秒」——各语言默认值不同,跨语言对接时对不上。
各语言与命令行的默认单位
- JavaScript:
Date.now()→ 毫秒。取秒要Math.floor(Date.now()/1000)。 - Linux / macOS:
date +%s→ 秒;date +%s%3N(GNU date)→ 毫秒。macOS 自带的是 BSD date,不支持%3N。 - Python:
time.time()→ 浮点秒;time.time_ns()//1e6→ 毫秒。 - Java:
System.currentTimeMillis()→ 毫秒;Instant.now().getEpochSecond()→ 秒。 - Go:
time.Now().Unix()→ 秒;UnixMilli()→ 毫秒。 - PHP:
time()→ 秒;microtime(true)→ 浮点秒。
注意 Java 与 JavaScript 默认给毫秒,Go / PHP / C 默认给秒。同一个项目里混用两套客户端时,这里必然出问题。
取当前时间戳不要用本地时间拼
常见错误写法是把本地日期时间格式化后重新解析成时间戳,绕一圈还引入了时区与夏令时的坑。取「此刻」永远应该用系统提供的当前时刻 API,它直接给绝对时间。
只有在需要「今天 0 点」这类按本地日历计算的时间点时,才需要日期库参与,并且要明确用哪个时区。
页面上的实时时间戳怎么用
顶部实时显示当前时间戳,可一键复制,也可以直接填入下方转换区,省掉手动粘贴。
它是按秒刷新的,用于对照日志、核对接口返回的时间字段足够;需要亚秒精度请用代码里的 performance.now() 或纳秒 API,页面不给这个精度。
时间戳会不会溢出
32 位有符号整数存秒级时间戳会在 2038-01-19 溢出(2038 问题)。现在的主流系统与语言都已改用 64 位,但嵌入式设备、老版本数据库字段(int(11))仍可能中招。
新项目请用 64 位整型或带时区的时间类型存时间,不要用 32 位 int。
上面这些都不用装软件,也不用注册:打开页面就能用。
打开时间戳转换 →常见问题
当前时间戳为什么和我看到的不一样?
先确认单位:秒级是 10 位,毫秒级是 13 位,两者差 1000 倍。再看是否被时区影响——时间戳本身不受时区影响,但很多工具显示的「当前时间」是本地时间,容易看串。
服务器时间和本地时间不一致,以哪个为准?
以服务器为准做业务判断,但服务器必须开启 NTP 对时。时间戳本身是绝对时刻,只要两边时钟准确就不会有偏差;出现偏差说明某一方的系统时钟没校准。
能拿到毫秒以下的精度吗?
可以,用微秒或纳秒 API(如 Go 的 UnixNano、Python 的 time_ns)。但页面显示只到秒,毫秒以下请在代码里取。