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

Bash环境中date命令转换日期为epoch时出现无效日期错误求助

解决Github Actions Bash中日期转Epoch的引号问题

问题分析

你遇到的核心问题是COMMENT_DATE变量的实际值包含双引号(比如"2022-08-13T10:37:16Z",引号是变量值的一部分),但执行echo $COMMENT_DATE时,Bash会自动处理单词拆分,去掉引号,所以你看不到;但传给date命令时,未正确处理的引号会被当作日期字符串的一部分,导致date识别失败。

可行方案

方案1:用printf解析引号

利用printf %b特性解析变量中的转义字符(包括双引号),生成干净的日期字符串:

if [[ $COMMENT_DATE == "null" ]]; then
  COMMENT_TS="null"
else
  COMMENT_TS=$(date -d "$(printf "%b" "$COMMENT_DATE")" '+%s')
fi

方案2:用eval展开变量引号

通过eval让Bash重新解析变量内容,自动去掉冗余的双引号:

if [[ $COMMENT_DATE == "null" ]]; then
  COMMENT_TS="null"
else
  COMMENT_TS=$(date -d "$(eval echo "$COMMENT_DATE")" '+%s')
fi

方案3:Bash参数扩展替换引号

用Bash内置的参数扩展全局替换掉变量中的所有双引号,操作高效且无需外部工具:

if [[ $COMMENT_DATE == "null" ]]; then
  COMMENT_TS="null"
else
  COMMENT_TS=$(date -d "${COMMENT_DATE//\"/}" '+%s')
fi

注:这个操作是全局替换所有双引号,而非仅删除首尾字符,符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 10:45:27