介绍
粘一个时间戳看日期,或者粘一个日期拿时间戳。值得先知道的两个坑是单位和时区,两者产生的答案都看起来合理却是错的,下面分别说。
使用方法
输入时间戳或日期字符串,选择方向。可读日期按浏览器所在时区显示,所以同一个时间戳在同事那里会是另一个墙上时间。
单位这个坑
Unix 时间从 1970 年初开始计数,不同生态用的单位不同。多数后端用秒,多数 JavaScript 用毫秒,所以一个值跨过这条边界就会落进 1970 或者遥远的未来。位数是最快的检查:十位是秒,十三位是毫秒,其它长度值得在相信这次转换之前多看一眼。
时间戳没有时区
这个数字是一个瞬间,在哪里都一样。时区只在它被渲染成日期时才介入,所以同一个值在两台机器上显示成两个墙上时间,而且两个都不算错。把日志条目和一张截图对时之前,先确认各自是按哪个时区渲染的,再去判断时间对不上。
它们通常出现在哪里
JWT 里的 exp 和 iat 字段、不为人类格式化的日志行、用整数存 epoch 的数据库列,以及要求时间戳而不是日期的排期格式。读一个令牌的过期时间大概是来这里最常见的理由,它也能快速分清一个凭据是过期了还是被拒绝了。
一眼能看出问题的数值
零就是纪元本身,1970 年 1 月 1 日,通常说明某个字段从来没被设置过,而不是那时发生了什么。落在 2038 年的日期暗示上游某处有个有符号 32 位的限制。一堆记录整齐地停在零点,说明本该存时间戳的地方存了日期。这个数字说的往往是代码的事,而不是事件的事。
常见问题
秒和毫秒怎么区分?
十位是秒,十三位是毫秒。搞错会得到 1970 年附近或者几万年后的日期,知道往哪看就一眼认出来。
按哪个时区显示?
你浏览器的时区。时间戳本身是一个不带时区的瞬间,渲染成日期时必须选一个。
会上传吗?
不会,计算在页面里完成。
为什么我的日期差了一天?
几乎总是因为一个不带时间的日期,它在一个时区被解释成零点,在另一个时区就显示成前一天的傍晚。
相关工具
- 开发者与文本工具
- JSON 本地格式化
在浏览器里格式化、压缩并校验 JSON。
- URL 本地编解码
在浏览器里编码或解码 URL 字符串。
- UA 字符串解析
从 UA 字符串提取浏览器、系统与设备提示。
- Cookie 三种格式互转
在 HTTP Cookie、JSON 与 Netscape 格式之间转换。
- 名单文本清洗
去空白、去重、排序、大小写、提取邮箱。
- 分隔文本转表格
按分隔符拆成表格,可复制 CSV / TSV。