コマンドTips

dateコマンドのフォーマット一覧 : IEEE Std 1003.1 "POSIX.1"

date(1)コマンドは現在時刻の出力やシステムの時刻の設定などに使われるほか、特定のフォーマットを指定しての日付文字列を表示する用途にも使用できる。date(1)コマンドの引数として+からはじまる文字列を指定することで、指定したフォーマットで出力させることができる。

date(1)コマンドで指定できるフォーマットはIEEE Std 1003.1 "POSIX.1"で標準化されており、FreeBSDやmacOSで使われているBSD date(1)でも、Linuxで採用されているGNU Core Utilities date(1)コマンドでも、同じフォーマットがサポートされている。

主なフォーマット指定は次のとおり。

%a
設定されたロケールでの短縮形曜日表記
%A
設定されたロケールでの曜日表記
%b
設定されたロケールでの短縮形月表記
%B
設定されたロケールでの月表記
%c
設定されたロケールでの年月日および時刻表記
%C
世紀(00〜99、2桁0埋め)
%d
日(00〜31、2桁0埋め)
%D
月/日/年(それぞれ2桁0埋め)
%e
日(1〜31、2桁スペース埋め)
%h
%bに同じ
%H
時(24時間表記、00〜23、2桁0埋め)
%I
時(12時間表記、00〜12、2桁0埋め)
%j
日(1年における何日目か、0〜366、3桁0埋め)
%m
月(00〜12、2桁0埋め)
%M
分(00〜59、2桁0埋め)
%n
改行コード
%p
設定されたロケールでの午前または午後表記
%r
%I:%M:%S %pに同じ
%S
秒(00〜60、2桁0埋め)
%t
タブコード
%T
時:分:秒(24時間表記、それぞれ2桁0埋め)
%u
曜日(整数での曜日表現、1〜7、1桁、1=月曜日)
%U
週(1年で何週目か、00〜53、2桁0埋め、日曜はじまり、最初の日曜日よりも前の日を00週とする)
%V
週(1年で何週目か、01〜53、2桁0埋め、月曜はじまり、1月1日を含む週が4日間以上ある場合にはその週が第01週、そうでない場合には次の週が第01週となる)
%w
曜日(整数での曜日表現、0〜6、1桁、0=日曜日)
%W
週(1年で何週目か、00〜53、2桁0埋め、月曜はじまり、最初の月曜日よりも前の日を00週とする)
%x
設定されたロケールでの年月日表記
%X
設定されたロケールでの時刻表記
%y
年(世紀における何年目か、00〜99、2桁0埋め)
%Y
年(4桁)
%Z
タイムゾーン名
%%
%

IEEE Std 1003.1 "POSIX.1"ではUNIX時間に関するフォーマットは規定していない。このため、UNIX時間を指定するフォーマットは実装しているコマンドの拡張機能となる。代表的な実装に関してはBSD dateおよびGNU Core Utilities dateを参照のこと。

dateコマンドフォーマット指定出力のサンプル

環境変数LANGの値がja_JP.UTF-8に設定されている場合、dateコマンドの実行例は次のようになる。

$ date
2012年 4月23日 月曜日 10時55分14秒 JST
$ 
$ date "+%Y年%b%e日 %A %X %Z"
2012年 4月23日 月曜日 11時06分23秒 JST
$ 
$ date "+%A %b %e %H:%M:%S %Z %Y"
月曜日  4月 23 11:14:12 JST 2012
$ 
$ date "+日付: %y/%m/%d%n時刻: %H:%M:%S"
日付: 12/04/23
時刻: 11:11:07
$ 
$ date "+時間: %r"
時間: 11:09:53 午前
$ 
$ date "+%Y%m%d%H%M.%S"
201204231111.50
$ 
$ date "+%s"
1335147134
$ 

IEEE Std 1003.1 "POSIX.1"で標準化されているフォーマットはBSD date(1)でもGNU date(1)でも使用できるが、出力結果はOSごとに異なることがある。特にロケールで出力を変えるフォーマットはOSごとに出力が異なることがあり、使用する前に確認した方がよい。

BSD date(1)に関する拡張オプションについてはdateコマンドの便利な使い方 : BSD dateを、GNU date(1)に関する拡張オプションについてはdateコマンドの便利な使い方 : GNU Core Utilities dateを参照のこと。

Last modified: 2023-02-17 14:25:23