date(1)コマンドは現在時刻の出力やシステムの時刻の設定などに使われるほか、特定のフォーマットを指定しての日付文字列を表示する用途にも使用できる。date(1)コマンドの引数として+からはじまる文字列を指定することで、指定したフォーマットで出力させることができる。
date(1)コマンドで指定できるフォーマットはIEEE Std 1003.1 "POSIX.1"で標準化されており、FreeBSDやmacOSで使われているBSD date(1)でも、Linuxで採用されているGNU Core Utilities date(1)コマンドでも、同じフォーマットがサポートされている。
主なフォーマット指定は次のとおり。
IEEE Std 1003.1 "POSIX.1"ではUNIX時間に関するフォーマットは規定していない。このため、UNIX時間を指定するフォーマットは実装しているコマンドの拡張機能となる。代表的な実装に関してはBSD dateおよびGNU Core Utilities 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を参照のこと。