%b %d %Y 格式的两个日期之间的差异

问题描述

我希望得到一些帮助,以找出两个日期之间的天数差异。

日期 1:系统日期

日期 2:2022 年 3 月 20 日(未来)

我想做的是将其转换为 EPOCH 时间,减去然后除以 86400 以获得两个日期之间的天数。但是,我遇到了 systax 的问题。这是我尝试过的:

days_remaining=('date "+%s" -d "Mar 20 2022"'-'date "+%s" -d "$(date '+%b %d %Y')"')/86400 

但是上面的方法不起作用。任何帮助将不胜感激。

解决方法

要在 bash 中进行计算,您需要一个算术上下文 (( ))。此外,要执行 date 命令,您必须将它们放在 $() 内,而不是字符串引号 ''

顺便说一句:date 中的最后一个 date "+%s" -d "$(date '+%b %d %Y') 命令不是必需的。 date +%s 将打印当前日期时间。除以 86400 时会丢失时间部分,因为 bash 仅使用整数。

(( days_remaining = ($(date -d "Mar 20 2022" +%s) - $(date +%s)) / 86400 )) 
,

你可以使用这个

days_remaining=$(($(($(date "+%s" -d "Mar 20 2022") - $(date "+%s" -d "$(date '+%b %d %Y')"))) /  86400))