如何在shell脚本中对指定exp_date日期变量执行减30天操作
shell自定义日期变量减30天实现方案
适用GNU date(绝大多数Linux发行版默认自带)
date的--date参数支持同时传入基准日期和时间偏移规则,操作未生效一般是没有把自定义日期变量传入--date的参数中,正确写法如下:
# 原日期变量 exp_date="Thu Sep 9 14:06:38 UTC 2021" # 计算减30天后的日期,输出格式和原格式保持一致 new_date=$(date --date "$exp_date -30 days" +"%a %b %d %T UTC %Y")
执行后new_date的取值为Mon Aug 9 14:06:38 UTC 2021,符合预期。
如果需要其他输出格式,修改+后面的格式符即可,比如要输出YYYY-MM-DD格式可以调整为+%Y-%m-%d。
适用BSD date(macOS系统默认自带)
macOS自带的date工具语法和GNU版不同,需要先指定原日期的解析格式,再做偏移计算,写法如下:
exp_date="Thu Sep 9 14:06:38 UTC 2021" new_date=$(date -j -f "%a %b %d %T %Z %Y" "$exp_date" -v-30d +"%a %b %d %T UTC %Y")
内容的提问来源于stack exchange,提问作者ani
相关产品推荐
相关产品推荐

