Bash での日付と時間のフォーマット

Nilesh Katuwal 2023年1月30日
  1. Bash で組み込みの printf を使用して日付と時刻をフォーマットする
  2. Bash での date コマンド形式の日付と時刻の使用
Bash での日付と時間のフォーマット

Linux シェルスクリプトで日付または時刻をフォーマットするには、標準の date コマンドを使用します。

同じコマンドをシェルスクリプトで使用できます。Linux の date コマンドは、システムの日付と時刻を表示および変更します。

ユーザーは、このコマンドを使用して、時刻をさまざまな形式で出力し、将来および過去の日付を計算することもできます。

Bash で組み込みの printf を使用して日付と時刻をフォーマットする

4.2 以上の bash バージョンでは、外部の日付フォーマッターの代わりに printf の組み込みの日付フォーマッターを使用することをお勧めします。

YYYY-MM-DD 形式で取得するには:

$ printf '%(%Y-%m-%d)T\n' -1

-1 は現在の時刻を示します。

出力:

2021-12-21

上記のコマンドは次のように書くこともできます。

$ printf '%(%F)T\n' -1

出力:

2021-12-21

-v を使用して変数名を指定することにより、現在の時刻を保存できます。現在の時刻を変数 cdate に保存して出力するには、次のようにします。

$ printf -v cdate '%(%F)T' -1
$ echo $cdate

上記のコマンドは、現在の日付を変数としてキャプチャして cdate に保存し、echo は変数の値を出力します。

出力:

2021-12-21

Bash での date コマンド形式の日付と時刻の使用

4.2 以下の Bash バージョンには date コマンドを使用できます。

現在の日付を MM-DD-YY 形式で表示するには:

$ date +"%m-%d-%y"

+ 記号は、日付と時刻の表示方法を指定するユーザー定義のフォーマット文字列を示します。

出力:

12-21-21

年を 4 桁に変換するには、yY に変更します。

$ date +"%m-%d-%Y"

出力:

12-21-2021

次のようにして、現在の日付を YYYY-MM-DD 形式で出力することもできます。

$ date -I

出力:

2021-12-21

時間のみを表示するには:

$ date +"%T"

出力:

13:01:00

時刻を HH:MM 形式で表示するには:

$ date +"%H-%M"

出力:

13-02

現在の日付をシェル変数に保存するには、次のようにします。

$ cdate=$(date +"%m-%d-%Y")
$ echo $cdate

現在の日付を取得し、cdate に保存しました。echocdate 値を出力します。

出力:

12-21-2021

日付N 日を追加するには、次のコマンドを使用します。

date -d="YYYY-MM-DD+N days"

例を見てみましょう。

$ date -d "2021-12-21+20 days"

出力:

Mon 10 Jan 2022 12:00:00 AM 

関連記事 - Bash DateTime