Linuxのdateコマンドで日付計算をすることがあったので、調べた内容を自分の備忘録として残しておく。
dateコマンドとは
「date」コマンドは指定したフォーマットの日付や時刻を表示します。
構文は以下の通りです。
date [オプション] [フォーマット]
dateコマンドのオプション
以下に「date」コマンドで使用できる主なオプションを紹介します。
オプション | 説明 |
---|---|
-d | 指定したオプションで日時を取得する |
-s | 日時を設定する |
-u | 協定世界時を取得する |
+format | 指定した形式で日時を取得する |
dateコマンドのフォーマット
以下は指定できる主なフォーマットの種類となります。
書式 | 説明 |
---|---|
%Y | 西暦4桁(1970〜) |
%y | 西暦下2桁(00〜99) |
%m | 月(01〜12) |
%b | 月の省略名(Jan~Dec) |
%B | 月名(January 〜 December) |
%d | 日(01〜31) |
%H | 時(24時間形式、00〜23) |
%I | 時(12時間形式、01〜12) |
%M | 分(00〜59) |
%S | 秒(00〜59) |
%s | UTCからの時刻(1970-01-01 00:00:00からの秒数) |
%a | 曜日の省略名(Sun, Mon, Tue, Wed, Thu, Fri, Sat) |
%A | 曜日名(Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday) |
%u | 曜日(1:月曜日 〜 7:日曜日) |
現在の日時
dateコマンドでフォーマット指定して、現在の日時を出力する例になります。
$ date "+%F" #年月日を出力
2022-02-28
$ date "+%T" #時分秒を出力
22:37:49
$ date '+%Y/%m/%d %H:%M:%S' #年月日と時分秒を出力
2022/02/28 22:40:13
前日(1日前)・翌日(1日後)
指定した形式で日時を取得するには「-d」オプションを使用します。
例えば、1日前や1日後の日付を取得したい場合は以下のように記述します。
前日
$ date -d '1 day ago' '+%Y/%m/%d %H:%M:%S'
2022/02/27 08:39:33
#数値を負数(-)にして前日を指定
$ date -d '-1 day' '+%Y/%m/%d %H:%M:%S'
2022/02/27 08:40:48
#「'1 day ago'」の代わりに「yesterday」を指定
$ date '+%Y-%m-%d' -d 'yesterday'
2022-02-27
翌日
$ date '+%Y-%m-%d' -d '1 day'
2022-03-01
$ date '+%Y-%m-%d' -d '1 days'
2022-03-01
#「'1 day'」の代わりに「tomorrow」を指定
$ date '+%Y-%m-%d' -d 'tomorrow'
2022-03-01
任意の月の月初日
出力フォーマットを指定するときに、日付部分を「 01 」とします。
$ date '+%Y-%m-01' -d '-2 months'
2021-12-01
$ date '+%Y-%m-01' -d '-1 months'
2022-01-01
$ date '+%Y-%m-01'
2022-02-01
$ date '+%Y-%m-01' -d '1 months'
2022-03-01
$ date '+%Y-%m-01' -d '2 months'
2022-04-01
任意の月の月末日
月末は「月初(ある月の 1 日)」の「 1 日前 」として求めます。
$ date +'%Y%m%d' -d"1 month ago `date +'%Y%m01'` 1 days ago" #先々月末
2021/12/31
$ date +'%Y%m%d' -d"`date +'%Y%m01'` 1 days ago" #先月末
2022/01/31
$ date +'%Y%m%d' -d"1 month `date +'%Y%m01'` 1 days ago" #今月末
2022/02/28
$ date +'%Y%m%d' -d"2 month `date +'%Y%m01'` 1 days ago" #来月末
2022/03/31
まとめ
今回は以上になります。
dateコマンドは日付を取得するのに便利なコマンドですので、この機会に使い方をよく理解しておきましょう。
もしdateコマンドの使い方を忘れてしまったら、この記事を参考にしてくださいね。