使用日期获取bash中的明天日期



我想编写一个bash脚本,该脚本将在给定的但下几天日期的过程数据上运行,我当前的方法是获取UNIX时间戳,并添加价值几天的秒数它,但是我无法正常工作,尚未找到我在网上寻找的东西。

这是我尝试的,我觉得问题是它的字符串不是一个数字,但是我对bash不了解,这是正确的吗?我该如何解决?

today="$(date +'%s')"
tomorrow="$($today + 86400)"
echo "$today"
echo "$tomorrow"

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

date -d '+1 day'

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

命令

$ date -v+1d

返回明天的日期。

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

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

以Yyyy-mm-dd的格式返回明天的日期。

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

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

tomorrow=$(( today + 86400 ))

另请参见http://mywiki.wooledge.org/arithmeticexpression有关在外壳中进行算术的更多信息。

我希望这能在这里解决您的问题。

 date --date 'next day'

设置时区,然后运行date

例如。

TZ=UTC-24 date 

另外,我会使用perl:

perl -e 'print localtime(time+84600)."n"'
echo $(date --date="next day" +%Y%m%d)

这将输出

20170623

我喜欢

input_date=$(date '+%Y-%m-%d')
tomorrow_date=$(date '+%Y-%m-%d' -d "$input_date + 1 day")
echo "$tomorrow_date"

它以yyyy-mm-dd

的格式返回$input_date之后的一天日期

date -d '12:00 today + 1 day'

遵循 @Astrofloyd的领导,鉴于今天是每年这是相关的一天(但这仍然是一个很大的边缘案例),您需要上述,而不仅仅是date -d tomorrowtomorrow已实施为"现在 24小时"实际上,如果下一个日历日期数字中有23个小时,则实际上可能是两个日历日期数字,因为我现在坐在哪里和何时坐着:

❯ date -d today ; date -d tomorrow; date -d '12:00 today +1 day'
Sat Mar 11 23:53:29 PST 2023  # reference
Mon Mar 13 00:53:29 PDT 2023  # what??
Sun Mar 12 12:00:00 PDT 2023  # correct! 

您可以在下面尝试

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

最新更新