求助: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
相关产品推荐
相关产品推荐

