You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JQ将New Relic API返回的时间戳转换为可读日期?

最优解决方案:用JQ直接转换(无需sed)

你的问题核心是毫秒级时间戳转日期格式,JQ完全可以搞定,之前没成功大概率是没处理毫秒转秒的步骤,或者用错了函数。

方法1:JQ内置函数(需JQ 1.6+)

New Relic返回的是13位毫秒时间戳,而JQ的strflocaltime默认接受10位秒级时间戳,所以先把字符串转成数字后除以1000,再格式化:

.timestamp | tonumber / 1000 | strflocaltime("%Y-%m-%d")

测试示例:
输入JSON:

{"timestamp": "1696358217197"}

执行命令:

echo '{"timestamp": "1696358217197"}' | jq '.timestamp | tonumber / 1000 | strflocaltime("%Y-%m-%d")'

输出:"2023-10-02"

方法2:结合系统date命令(兼容旧版JQ)

如果你的JQ版本低于1.6,没有strflocaltime,可以用JQ提取时间戳后传给date命令处理:

echo '{"timestamp": "1696358217197"}' | jq -r '.timestamp' | xargs -I {} date -d @$(({} / 1000)) +%Y-%m-%d

解释:

  • jq -r输出原始字符串(不带引号)
  • xargs -I {}把时间戳传给date命令
  • $(({} / 1000))把毫秒转成秒
  • date -d @<秒级时间戳>解析时间,+%Y-%m-%d指定输出格式

为什么不推荐sed?

sed擅长文本替换,但不擅长数值计算和日期解析,要靠sed实现时间戳转日期需要写极其复杂的正则和计算逻辑,完全没必要,用JQ或JQ+date的方案更简洁、易维护。

内容的提问来源于stack exchange,提问作者Rafael Umbelino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 08:17:03