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

Shell脚本中如何将AWS返回的UTC格式时间转换为Unix时间戳

AWS返回的UTC格式时间转Unix时间戳解决方案

核心报错原因

从提供的错误日志可以定位到两个核心问题:

  1. 存储时间的$timestamp变量值本身包裹了多余的双引号,实际值为"2021-06-23T10:12:00Z",而非纯净的时间字符串2021-06-23T10:12:00Z,导致date命令无法识别日期格式
  2. -j是BSD系统(含macOS)date命令的专属参数,Linux默认的GNU date不支持该参数,所以第二种方法直接报错无效选项

修复步骤

第一步:预处理变量去除多余双引号

用shell参数扩展直接去除变量里的所有双引号即可:

timestamp=${timestamp//\"/}

第二步:按系统环境执行转换命令

  • Linux(GNU date)环境
    该格式自带的Z后缀会被GNU date自动识别为UTC 0时区,无需额外指定时区参数:

    utctimestamp=$(date -d "$timestamp" +%s)
    
  • macOS/BSD 环境
    用BSD date专属的格式匹配参数即可,注意格式字符串前不需要加+号:

    utctimestamp=$(date -j -f "%Y-%m-%dT%H:%M:%SZ" "$timestamp" +%s)
    

完整示例

# 模拟从AWS接口获取的带多余引号的原始时间
raw_timestamp='"2021-06-23T09:48:00Z"'
# 去除多余引号
timestamp=${raw_timestamp//\"/}
# Linux环境执行转换
utctimestamp=$(date -d "$timestamp" +%s)
# 输出结果:1624441680
echo $utctimestamp

内容的提问来源于stack exchange,提问作者P.Lonnie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 20:45:08