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

如何在jq中转换BOSH VM创建时间为Epoch以进行时间对比

在jq中直接转换BOSH VM创建时间为Epoch并筛选实例

你完全可以在jq命令中直接完成日期转换和筛选,不需要逐个提取处理,这种方式效率足够应对75-450台VM的规模。具体实现如下:

完整命令示例

假设你已经将目标对比Epoch时间存在TARGET_EPOCH变量中(替换为你实际的前置步骤获取值):

# 示例:生成目标时间的Epoch值(可替换为你的实际来源)
TARGET_EPOCH=$(date -d "2024-07-10" +%s)

# 执行BOSH查询+jq筛选
bosh instances --vitals --json | jq -r --arg epoch "$TARGET_EPOCH" '
  .Tables[].Rows[] 
  | select( 
      ( .vm_created_at | strptime("%a %b %d %T UTC %Y") | mktime ) 
      < ($epoch | tonumber)
    ) 
  | .instance_name
'

关键细节说明

  • 日期格式匹配:strptime("%a %b %d %T UTC %Y") 完全对应你给出的时间格式Fri Jul 16 17:34:44 UTC 2024,确保解析不会出错
  • 外部变量传递:用--arg epoch "$TARGET_EPOCH"将Bash变量传入jq,再通过tonumber把字符串类型的Epoch转成数字用于数值比较
  • 批量处理优势:jq会一次性遍历所有VM数据完成转换和筛选,避免了循环逐个处理的额外开销

如果遇到日期解析失败,先检查vm_created_at的输出格式是否和示例完全一致(比如时区是否统一为UTC、日期部分的空格格式),调整strptime的格式字符串即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 21:48:14