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

求助:Bash脚本中日期格式转换与剩余天数计算

Bash日期转换与剩余天数计算

步骤1:格式化目标日期

将exp_dt变量中的GMT日期字符串转换为05-Jun-2023格式,借助date命令完成解析与格式输出:

formatted_date=$(date -d "$exp_dt" +"%d-%b-%Y")
  • -d "$exp_dt":指定待解析的日期字符串,date会自动识别GMT时区
  • +"%d-%b-%Y":定义输出格式,%d为两位日期、%b为缩写月份、%Y为四位年份

步骤2:计算剩余天数

通过Unix时间戳(自1970年起的秒数)计算目标日期与当前日期的差值,再转换为天数:

# 获取目标日期的Unix时间戳
target_ts=$(date -d "$exp_dt" +%s)
# 获取当前日期的Unix时间戳
current_ts=$(date +%s)
# 计算剩余天数(一天=86400秒)
remaining_days=$(( (target_ts - current_ts) / 86400 ))
days_str="${remaining_days} days"
  • 若目标日期已过期,结果会为负数,可根据需求添加取绝对值处理(部分Shell需先定义abs函数)

步骤3:拼接最终结果

将格式化日期与剩余天数用|连接,存入new_var并输出:

new_var="${formatted_date}|${days_str}"
echo "$new_var"

完整示例代码

exp_dt="Jun  5 08:25:42 2023 GMT"
formatted_date=$(date -d "$exp_dt" +"%d-%b-%Y")
target_ts=$(date -d "$exp_dt" +%s)
current_ts=$(date +%s)
remaining_days=$(( (target_ts - current_ts) / 86400 ))
days_str="${remaining_days} days"
new_var="${formatted_date}|${days_str}"
echo "$new_var"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 19:42:16