start=20190903
2つの日付があり、end=20210912
開始がほぼ終わるまで増分したいと思います。増分は13日です。
次のコードがありますが、終わりを超えています。
#! /usr/bin/env bash
start="20190903"
end="20210912"
startdate="$(date -d ${start} +'%Y-%m-%d')"
enddate="$(date -d ${end} +'%Y-%m-%d')"
echo ${startdate}
echo ${enddate}
while [ "${startdate}" < "${enddate}" ]; do
echo ${startdate}
startdate="$( date -d "${startdate} + 13 days" +'%Y-%m-%d')"
done
ベストアンサー1
startdate+interval
先端と比較すると、オーバーライドを防ぐことができます。
#!/bin/bash
start="20190903"
end="20210912"
interval=1123200
# 13 days = 13 * 24 * 60 *60
startdate=$( date --utc -d ${start} +%s )
enddate=$( date --utc -d ${end} +%s )
echo "$( date --utc -d @${startdate} +"%Y-%m-%d" ) (start)"
next=${startdate}
while [[ "$(( next+interval ))" -lt "${enddate}" ]] ; do
next=$(( next+interval ))
nextdate=$( date --utc -d @${next} +"%Y-%m-%d" )
echo "${nextdate}"
done
echo "$( date --utc -d @${enddate} +"%Y-%m-%d" ) (end)"
13日をどのように追加したのか分からないので、1970-01-01から秒に変更しました。少なくとも今、あなたは他の方法を知っています。