今週や来週の月曜と日曜の日付を生成したい
今週や来週の月曜と日曜の日付を生成したい、ファイル名とかフォルダ名とか用に、Macで。
デフォルトのdate
コマンドを使用する
date
コマンドの週は日曜始まりなので、多少注意がいる。
月曜日に実行する場合
その日の月曜日から次の日曜日:
$ echo $(date -v-mon +"%F")"_"$(date -v+sun +"%F")
出力例:
2020-05-18_2020-05-24
次の週の月曜日から次の週の日曜日:
$ echo $(date -j -v+mon -f "%F" $(date -v+1w +"%F") +"%F")"_"$(date -j -v+sun -f "%F" $(date -v+1w +"%F") +"%F")
出力例:
2020-05-25_2020-05-31
火曜日から土曜日に実行する場合
前の月曜日から次の日曜日:
$ echo $(date -v-mon +"%F")"_"$(date -v+sun +"%F")
次の月曜日から次の週の日曜日:
$ echo $(date -v+mon +"%F")"_"$(date -j -v+sun -f "%F" $(date -v+1w +"%F") +"%F")
日曜日に実行する場合
前の月曜日からその日の日曜日:
$ echo $(date -v-mon +"%F")"_"$(date -v-sun +"%F")
次の月曜日から次の週の日曜日:
$ echo $(date -v+mon +"%F")"_"$(date -v+1w +"%F")
GNU系のdate
コマンドと同様のgdate
コマンドを使用する
Linux とかのGNU系のdate
と同じオプションのコマンドを使いたい場合はcoreutils
をhomebrew
で入れるとgdate
コマンドが使える。
gdate
コマンドのオプション指定方法のほうが分かりやすい。
$ brew install coreutils
月曜日に実行する場合
その日の月曜日から次の日曜日:
$ echo $(gdate -d "monday" +"%F")"_"$(gdate -d "sunday" +"%F")
出力例:
2020-05-18_2020-05-24
次の週の月曜日から次の週の日曜日:
$ echo $(gdate -d "next monday" +"%F")"_"$(gdate -d "1 week next sunday" +"%F")
出力例:
2020-05-25_2020-05-31
火曜日から土曜日に実行する場合
前の月曜日から次の日曜日:
$ echo $(gdate -d "last monday" +"%F")"_"$(gdate -d "sunday" +"%F")
次の月曜日から次の週の日曜日:
$ echo $(gdate -d "next monday" +"%F")"_"$(gdate -d "1 week next sunday" +"%F")
日曜日に実行する場合
前の月曜日からその日の日曜日:
$ echo $(gdate -d "last monday" +"%F")"_"$(gdate -d "sunday" +"%F")
次の月曜日から次の週の日曜日:
$ echo $(gdate -d "next monday" +"%F")"_"$(gdate -d "next sunday" +"%F")
その他
あまり試していないが、dateutils
(dateutils)というコマンドツールも便利そう。
参考ページ等
man date
- How To Format Date For Display or Use In a Shell Script - nixCraft
- bash - UNIX date: How to convert week number (date +%W) to a date range (Mon-Sun)? - Stack Overflow
- linux - Print date for the monday of the current week (in bash) - Stack Overflow
- shell - Print dates in date range linux - Stack Overflow
- dateutils
- 10 Practical Examples of Linux Cal/NCal command for Beginners
- Display all the dates in week numbers in UNIX - Unix & Linux Stack Exchange
- Linux and Unix cal command tutorial with examples | George Ornbo
- unix - Get Tuesday and Wednesday next week, with Linux date command - Stack Overflow
- Macでdateコマンドが違う件について | 株式会社龍野情報システム
- Macのdateコマンドで前日の日付を取得する - Qiita
- Macでdateコマンドを使いこなす - ののいち の 1.2..3...
- MACのdateコマンドで現在の日時を簡単に表示する | ITを使っていこう
- MACのdateコマンドでxx前後で日にちを表示 | ITを使っていこう
- date コマンド | コマンドの使い方(Linux) | hydroculのメモ