Bash中移除epoch时间戳毫秒值 正确转换为可读日期
Epoch时间戳用date命令转换返回53718年异常解决
从Elasticsearch中获取到的epoch时间戳结果为 1633036680022,尝试转换为人类可读日期时做了如下操作:
- 使用epoch转换在线工具完成时间转换
- 在终端中使用bash命令执行转换,执行的命令及返回结果如下:
$ date -d @1633036680022 Tuesday 15 November 53718 05:30:22 PM IST
异常原因
终端输出显示年份为53718,出现该异常的核心原因是:当前获取到的epoch时间戳为毫秒级格式,而Linux系统date命令的@入参默认接收秒级epoch时间戳,直接传入毫秒值相当于将时间数值放大了1000倍,最终计算出了远超出实际时间范围的错误结果。
解决方法
将毫秒级时间戳除以1000,处理为秒级epoch时间戳后再传入date命令即可得到正确的转换结果,不需要提前手动计算数值,直接在终端通过shell算术运算就能完成转换:
date -d @$((1633036680022 / 1000))
执行后返回的就是符合预期的2021年对应时间,具体显示的日期时分秒会受当前系统设置的时区影响。
内容的提问来源于stack exchange,提问作者praveen
相关产品推荐
相关产品推荐

