使用日期在Bash中获取明天的日期

时间:2015-05-14 10:57:47

标签: bash shell unix

我想编写一个bash脚本,该脚本将在给定但过程数据上运行,并且具有下一天的日期,我当前的方法是获取unix时间戳并为其添加一天的秒数,但我无法使其工作,还没有找到我在网上寻找的东西。

这是我尝试过的,我觉得问题是它的字符串不是数字,但我不太了解bash以确定,这是正确的吗?以及如何解决这个问题?

today="$(date +'%s')"

tomorrow="$($today + 86400)"

echo "$today"

echo "$tomorrow"

7 个答案:

答案 0 :(得分:7)

如果您有gnu-date,那么第二天就可以做到:

date -d '+1 day'

答案 1 :(得分:4)

$(...)是命令替换。您正尝试将$today + 86400作为命令运行。

$((...))是算术扩展。这就是你想要使用的。

tomorrow=$(( today + 86400 ))

另请参阅http://mywiki.wooledge.org/ArithmeticExpression了解有关在shell中进行算术运算的更多信息。

答案 2 :(得分:4)

此问题的一些答案取决于是否安装了GNU日期。如果您没有GNU日期,则可以使用带有date选项的内置-v命令。

命令

$ date -v+1d

返回明天的日期。

您可以将它与所有标准date格式选项一起使用,所以

$ date -v+1d +%Y-%m-%d

以YYYY-MM-DD格式返回明天的日期。

答案 3 :(得分:1)

我希望这可以解决您的问题here

 date --date 'next day'

答案 4 :(得分:0)

设置您的时区,然后运行date

E.g。

TZ=UTC-24 date 

或者,我使用perl:

perl -e 'print localtime(time+84600)."\n"'

答案 5 :(得分:0)

echo $(date --date="next day" +%Y%m%d)

这将输出

  

20170623

答案 6 :(得分:-1)

您可以尝试以下

#!/bin/bash
today=`date`
tomorrow=`date --date="next day"`
echo "$today"
echo "$tomorrow"