在macOS上计算Bash中的日期/时间差

时间:2017-12-08 17:48:25

标签: bash macos date

我意识到涉及日期计算的问题和答案很多,但我还没有找到解决OS X / macOS问题的方法。我想计算两个日期和时间之间的时差,但我的语法必须不正确。

now=$(date +"%b %d %Y %H:%M:%S")
end=$(date +"Dec 25 2017 08:00:00")
dif=$(date -j -f "%b %d %Y %H:%M:%S" "$end" - "$now")
echo $dif
# Mon Dec 25 08:00:00 MST 2017

它只返回$end值,因此我不确定如何实际计算时间差异。

1 个答案:

答案 0 :(得分:4)

理想的方法是将当前时间转换为EPOCH以及EPOCH中您需要的日期并获取差异(这适用于bash上的macOS Sierra

dudeOnMac:~ $ date +%s
1512757414
dudeOnMac:~ $ date -j -f "%b %d %Y %H:%M:%S" "Dec 25 2017 08:00:00" +%s
1514169000

所以现在存储在你想要的变量

end=$(date -j -f "%b %d %Y %H:%M:%S" "Dec 25 2017 08:00:00" +%s)
now=$(date +%s)
printf '%d seconds left till target date\n' "$(( (end-now) ))"
printf '%d days left till target date\n' "$(( (end-now)/86400 ))"