このエントリーをはてなブックマークに追加

日付フォーマットを指定してdateコマンドを実行する方法です。

単純にdateコマンドを打つと人間が読むには読みやすいですが、 プログラムから利用するには不便なフォーマットです。

$ date
2013年 12月 11日 水曜日 08:49:16 JST

$ env LANG=ja_JP.UTF-8 date
2013年 12月 11日 水曜日 08:49:31 JST

$ env LANG=en_US.UTF-8 date
Wed Dec 11 08:49:39 JST 2013

プログラムからも利用しやすいようにするには、出力を整形する必要があります。 dateコマンドの出力を整形するには、"+%<フォーマット指定文字>"のように指定します。

$ date +%Y%m%d%H%M%S
20010203040506

表示フォーマットの違いが分かりやすい時刻に設定してからやってみます。

$ sudo date --set="2001/2/3 04:05:06"
2001年  2月  3日 土曜日 04:05:06 JST

代表的なフォーマットについて説明します。 各フォーマット指定は以下のようになっています。

$ date +%Y # 年 4ケタ
2001
$ date +%y # 年 下2ケタ
01
$ date +%m # 月 01..12
02
$ date +%d # 日 01..31
03
$ date +%e # 日 _1..31(スペースでパディング)
 3
$ date +%H # 時 00..23
04
$ date +%k # 時 _0..23(スペースでパディング)
 4
$ date +%M # 分 00..59
05
$ date +%S # 秒 00..59
06
$ date +%N # ナノ秒 000000000..999999999
015545884

これらを組み合わせて年月日時刻を組み合わせた文字列を作るには以下のようにします。

$ date +%Y%m%d%H%M%S
20010203040506

フォーマット中にスペースなどがある場合はクオーテーションで囲んでください。

$ date '+%Y/%m/%d %H:%M:%S'
2001/02/03 04:05:06



記事一覧へ