LoginSignup
8
6

More than 1 year has passed since last update.

【Linux】dateコマンドで日付フォーマットの変更及び日付計算の方法

Posted at

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コマンドの使い方を忘れてしまったら、この記事を参考にしてくださいね。

8
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6