UNIX/Linux の日付とタイムスタンプ
日付と時刻の情報は、グラフィカルバージョンの Linux の場合ほどコマンドラインに表示されませんが、date
コマンドを使用してその情報を確実に取得できます。
このチュートリアルでは、date
コマンドを使用して日付と時刻を取得、解析、変換し、Bash シェルコマンドラインを想定して Linux でさまざまな形式で出力する方法について説明します。
Linux で現在の日付と時刻を取得する
示されているように、date
を実行すると、現在の日付と時刻がタイムゾーンとともに表示されます。
user@linux:~$ date
Tue 01 Jan 2022 12:00:00 AM +04
デフォルトの日時形式は、現在のタイムゾーンになります。この場合、date
の出力は、タイムゾーンが Gulf StandardTime または GMT+04
であるユーザー向けです。UTC や GMT、または yyyy/mm/dd
または dd/mm/yyyy
などの別の形式で日付と時刻を出力するには、次のように特別な修飾子を使用してその形式を指定できます。
# to print the current date in dd/mm/yyyy format
date +%d-%m-%Y
# to print the current date and time in UTC
date -u
# to print the date and/or time as per IETF RFC3349
date --rfc-3339=seconds
# to print the date and time within a custom string
date +"Today is %D and the time is %I:%M:%S"
UNIX 時間
ほとんどの UNIX システムでは、現在の時刻は、UNIX エポックと呼ばれる長整数として時間を保持し、簡略化するために特定の瞬間から経過した時間として格納されます。すべての UNIX システムで広く受け入れられている瞬間は、1970 年 1 月 1 日午前 12:00:00
です。これは UNIX タイムスタンプと呼ばれ、最新のすべての UNIX / Linux システムで認識されます。
たとえば、2022 年 1 月 1 日の UNIX タイムスタンプを検索する場合は、date
コマンドを使用できます。
user@linux:~$ date -d"1 January 2022 12:00 AM" +%s
1640980800
date
は、フォーマットされた日付と時刻の文字列を解析しようとし(または、タイムスタンプが指定されていない場合は、時刻を 12:00 AM と見なします)、指定された日付または時刻の UNIX タイムスタンプ形式を出力します。1640980800 は、1970 年 1 月 1 日午前 12:00:00 から経過した正確な秒数です。
逆も可能です。これにより、UNIX タイムスタンプを取得し、それを日付表現に変換します。元の日付に戻すために、示されているように UNIX タイムスタンプを渡して変換することができます。
user@linux:~$ date -d @1640980800
Sat 01 Jan 2022 12:00:00 AM +04
必要に応じて、上記で説明したように、UTC や GMT などの特定の方法で日付をフォーマットする他のパラメーターを含めることもできます。