如何在bash脚本中增加日期

时间:2013-09-09 20:52:02

标签: bash date

我有一个带有日期参数的bash脚本(yyyy-mm-dd)

我用

将其转换为秒
startdate="$(date -d"$1" +%s)";

我需要做的是迭代8次,每次将纪元日期增加1天,然后以mm-dd-yyyy格式显示

6 个答案:

答案 0 :(得分:64)

使用date命令将天数添加到现有日期。

以下内容:

DATE=2013-05-25

for i in {0..8}
do
   NEXT_DATE=$(date +%m-%d-%Y -d "$DATE + $i day")
   echo "$NEXT_DATE"
done

产生

05-25-2013
05-26-2013
05-27-2013
05-28-2013
05-29-2013
05-30-2013
05-31-2013
06-01-2013
06-02-2013

请注意,这适用于您的情况,但其他日期格式(如yyyymmdd)可能需要在日期字符串中包含“UTC”(例如。date -ud "20130515 UTC + 1 day"

答案 1 :(得分:5)

startdate=$(date -d"$1" +%s)
next=86400 # 86400 is one day

for (( i=startdate; i < startdate + 8*next; i+=next )); do
     date -d"@$i" +%d-%m-%Y
done

答案 2 :(得分:1)

从现在开始增加或减少日期的另一种方法是更紧凑:

$ date %y%m%d ## show the current date
$ 20150109
$ ## add a day:
$ echo $(date %y%m%d -d "$(date) + 1 day")
$ 20150110
$ ## Subtract a day:
$ echo $(date %y%m%d -d "$(date) - 1 day")
$ 20150108
$ 

答案 3 :(得分:0)

增加天数并不容易。通常通过将公历日期转换为儒略日数来完成。然后你可以增加一天。然后你计算格里高利日期。以下是示例代码:

http://it.toolbox.com/wiki/index.php/Convert_a_date_to_a_Julian_day

http://it.toolbox.com/wiki/index.php/Convert_a_Julian_day_to_a_date

答案 4 :(得分:0)

在bash脚本中增加日期并根据年,月和日创建文件夹结构,以便从命令行输出中组织大量文件。

<div ng-if="user.name">The user is logged in!</div>
<div ng-if="!user.name">The user is not logged in.</div>

答案 5 :(得分:0)

与此类似,还有另一种方式,可能不如每天增加86400秒,但值得尝试-

day="2018-07-01"
last_day="2019-09-18"
while [[ $(date +%s -d "$day") -le $(date +%s -d "${last_day}") ]];do 
    echo $i;    
    # here you can use the section you want to use
    day=$(date -d "$day next day" +%Y-%m-%d); 
done