45

yyyy-mm-dd 形式の日付の引数を取る Bash スクリプトがあります。

私はそれを秒に変換します

startdate="$(date -d"$1" +%s)";

私がする必要があるのは、エポック日付を 1 日ずつインクリメントし、mm-dd-yyyy の形式で表示するたびに、8 回反復することです。

4

6 に答える 6

93

コマンドの機能を使用して、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")。

于 2013-09-09T21:34:15.197 に答える
7
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
于 2013-09-09T20:56:48.967 に答える
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
$ 
于 2015-01-09T21:15:25.600 に答える