dateコマンドはシステムの時間を表示または設定できます。
システムの時間を表示する場合はフォーマット形式の文字列を用いて、表示したい形式を生成できます。
-dオプションを用いると指定した時間について表示することもできます。
dateコマンドの構文
時間の表示
1 |
date [option]… [+format] |
'+'の記号とフォーマット文字列の組み合わせで、表示する時間の文字列を指定します。
時間の設定
1 |
date [-u|--utc|--universal] [ MMDDhhmm[[CC]YY][.ss] ] |
月(MM)、日(DD)、時(hh)、分(mm)、4桁または2桁の西暦(CCYY)、秒(ss)を指定して、時間を設定します。
時間の表示
デフォルトの表示
dateコマンドを引数なしで実行する場合、現在時間を表示します。また、デフォルトの表示はLC_TIME=Cで'+%a %b %e %H:%M:%S %Z %Y'を指定したものになります。
コマンド例
1 |
LC_TIME=C date |
実行結果
1 |
Sat Feb 10 14:01:10 JST 2018 |
環境変数LC_TIMEを変更することによって、表示が変化します。以下の例では、envコマンドを利用して全ての環境変数を削除してdateコマンドを実行した例です。
コマンド例
1 |
env -i LC_TIME=ja_JP.UTF-8 date |
実行結果
1 |
2018年 2月 10日 土曜日 14:19:44 JST |
時分秒の表示
利用できるフォーマットの表(時分秒)
フォーマット | 意味 |
%H | 時(24時間表記)で0埋め |
%I | 時(12時間表記)で0埋め |
%k | 時(24時間表記)でスペース埋め |
%l | 時(12時間表記)でスペース埋め |
%M | 分 |
%S | 秒 |
%N | ナノ秒 |
%p | AMかPM (日本語:午前か午後) |
%P | amやpm (日本語:午前や午後) |
%r | 12時間の時計時間 |
%R | 24時間の時・分 |
%s | UNIXのエポック時間 |
%T | 24時間の時・分・秒 |
%X | ロケールに合わせた時間表示 |
%z | タイムゾーン(+0900) |
%:z | タイムゾーン(+09:00) |
%::z | タイムゾーン(+09:00:00) |
%:::z | タイムゾーン(+09) |
%Z | タイムゾーンの略称 |
コマンド例と実行結果(LC_TIME=C)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
$ date '+Hour /00-23/ : %H' Hour /00-23/ : 11 $ date '+Hour /01-12/ : %I' Hour /01-12/ : 11 $ date '+Hour / 0-23/ : %k' Hour / 0-23/ : 11 $ date '+Hour / 1-12/ : %l' Hour / 1-12/ : 11 $ date '+Minute / 1-12/ : %M' Minute / 1-12/ : 10 $ date '+Second /00-60/ : %S' Second /00-60/ : 58 $ date '+nanosec /000000000-999999999/ : %N' nanosec /000000000-999999999/ : 118383099 $ date '+AM or PM : %p' AM or PM : AM $ date '+am or pm : %P' am or pm : am $ date '+Locale'\''s 12-hour clock time : %r' Locale's 12-hour clock time : 11:10:58 AM $ date '+24-hour hour and minute (%%H:%%M) : %R' 24-hour hour and minute (%H:%M) : 11:10 $ date '+UNIX epoch time(sec) : %s' UNIX epoch time(sec) : 1518228658 $ date '+24-hour hour, minute, and second (%%H:%%M:%%S) : %T' 24-hour hour, minute, and second (%H:%M:%S) : 11:10:58 $ date '+Locale'\''s time representation : %X' Locale's time representation : 11:10:58 $ date '+Time zone : %z' Time zone : +0900 $ date '+Time zone : %:z' Time zone : +09:00 $ date '+Time zone : %::z' Time zone : +09:00:00 $ date '+Time zone : %:::z' Time zone : +09 $ date '+Alphabtic time zone abbr. : %Z' Alphabtic time zone abbr. : JST |
(参考)コマンド例と実行結果(LC_TIME=ja_JP.UTF-8) ▼表示
日付の表示
利用できるフォーマットの表
フォーマット | 意味 |
%Y | 4桁の西暦 |
%y | 下2桁の西暦 |
%C | 上2桁の西暦 |
%m | 月 |
%d | 日 |
%e | 日でスペース埋め |
%D | 日付(%m/%d/%y) |
%F | 日付でISO8601形式(%Y-%m-%d) |
%a | ロケールでの曜日の名前 |
%A | ロケールでの曜日の名前(フルネーム) |
%b | ロケールでの月の名前(略称) |
%h | ロケールでの月の名前(略称)(%bと同じ) |
%B | ロケールでの月の名前(フルネーム) |
%c | ロケールでの日付と時間 |
%j | 1年の中の日にち |
%w | 1週間の中の曜日(0:日曜日) |
%u | 1週間の中の曜日(1:月曜日) |
%U | 1年の内の週の数字 最初の日曜日が1週目でそれ以前が0週目 |
%W | 1年の内の週の数字 最初の月曜日が1週目でそれ以前が0週目 |
%q | 四半期での数字 (1-3月:1,4-6月:2,7-9月:3,10-12月:4) |
%V | ISO8601での週の数字 |
%g | ISO8601での年(下2桁) |
%G | ISO8601での年 |
%x | ロケールでの日付表示 |
コマンド例と実行結果(LC_TIME=C)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
$ date '+Year : %Y' Year : 2018 $ date '+Last 2-digit of year /00-99/ : %y' Last 2-digit of year /00-99/ : 18 $ date '+Century (4-digit year'\''s first two digit) : %C' Century (4-digit year's first two digit) : 20 $ date '+Month /01-12/ : %m' Month /01-12/ : 02 $ date '+Day of month : %d' Day of month : 10 $ date '+Day of month : (%%_d) : %e' Day of month : (%_d) : 10 $ date '+Date (%%m/%%d/%%y) : %D' Date (%m/%d/%y) : 02/10/18 $ date '+Full date in ISO 8601 format: (%%Y-%%m-%%d) : %F' Full date in ISO 8601 format: (%Y-%m-%d) : 2018-02-10 $ date '+Locale'\''s weekday name (abbr.) : %a' Locale's weekday name (abbr.) : Sat $ date '+Locale'\''s full weekday name : %A' Locale's full weekday name : Saturday $ date '+Locale'\''s month name (abbr.) : %b' Locale's month name (abbr.) : Feb $ date '+Locale'\''s month name (abbr.) : %h' Locale's month name (abbr.) : Feb $ date '+Locale'\''s full month name : %B' Locale's full month name : February $ date '+Locale'\''s date and time : %c' Locale's date and time : Sat Feb 10 13:27:40 2018 $ date '+Day of year /001-366/ : %j' Day of year /001-366/ : 041 $ date '+Day of week (0:Sun) /0-6/ : %w' Day of week (0:Sun) /0-6/ : 6 $ date '+Day of week (1:Mon) /1-7/ : %u' Day of week (1:Mon) /1-7/ : 6 $ date '+Week number of year (Sun as first day) /00-53/ : %U' Week number of year (Sun as first day) /00-53/ : 05 $ date '+Week number of year (Mon as first day) /00-53/ : %W' Week number of year (Mon as first day) /00-53/ : 06 $ date '+Quater of year /1-4/ : %q' Quater of year /1-4/ : 1 $ date '+ISO week number : %V' ISO week number : 06 $ date '+Year of the ISO week number (last 2-digit of year): %g' Year of the ISO week number (last 2-digit of year): 18 $ date '+Year of the ISO week number : %G' Year of the ISO week number : 2018 $ date '+Locale'\''s date representation : %x' Locale's date representation : 02/10/18 |
(参考)コマンド例と実行結果(LC_TIME=ja_JP.UTF-8) ▼表示
時間の設定
最初の文字に+の記号を使わない場合、dateコマンドは時間の設定を行います。
時間の設定の構文は
1 |
date [ MMDDhhmm[[CC]YY][.ss] ] |
になります。月(MM)、日(DD)、時(hh)、分(mm)、4桁または2桁の西暦(CCYY)、秒(ss)を指定して、時間を設定できます。時間の設定には管理者権限が必要です。
また、以下のコマンド例では一時的にシステムの時間を変更した後で、ntpdateコマンドで日本の公開NTPサーバを指定して時間を修正しています。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$date 2018年 2月 10日 土曜日 14:28:36 JST $ $sudo date '010100002010.00' 2010年 1月 1日 金曜日 00:00:00 JST $ $date 2010年 1月 1日 金曜日 00:00:05 JST $ $sudo ntpdate ntp.nict.jp 10 Feb 14:29:17 ntpdate[4278]: step time server 133.243.238.243 offset -286.102367 sec $ $date 2018年 2月 10日 土曜日 14:29:21 JST |
ntpdateコマンドのインストールは
1 |
sudo apt-get install ntpdate |
になります。
dateコマンドのオプション
日付・時・分・秒を指定して表示
(-dオプション)
-dオプションは現在の時間の代わりに指定した文字列を解析して、その時間を表示します。
コマンド例
1 |
date -d '2000-1-1 20:00' |
実行結果
1 |
2000年 1月 1日 土曜日 20:00:00 JST |
解析された文字列の情報を表示
(--debugオプション)
--debugオプションを用いると、-dオプション等で解析された時間の文字列の情報を表示できます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 11 12 |
$date --debug -d '2000-1-1 20:00' date: parsed date part: (Y-M-D) 2000-01-01 date: parsed time part: 20:00:00 date: input timezone: system default date: using specified time as starting value: '20:00:00' date: starting date/time: '(Y-M-D) 2000-01-01 20:00:00' date: '(Y-M-D) 2000-01-01 20:00:00' = 946724400 epoch-seconds date: timezone: system default date: final: 946724400.000000000 (epoch-seconds) date: final: (Y-M-D) 2000-01-01 11:00:00 (UTC) date: final: (Y-M-D) 2000-01-01 20:00:00 (UTC+09) 2000年 1月 1日 土曜日 20:00:00 JST |
ファイルから文字列を読み込み時間を表示
(-fオプション)
-fオプションは、ファイルを指定し、そのファイルの文字列を解析して、その文字列に対応する時間を表示できます。
コマンド例
1 |
date -f datefile.txt |
datefile.txt
1 2 3 |
2000-1-1 20:00 2010-11-22 11:30 2015-5-15 5:30 |
実行結果
1 2 3 |
2000年 1月 1日 土曜日 20:00:00 JST 2010年 11月 22日 月曜日 11:30:00 JST 2015年 5月 15日 金曜日 05:30:00 JST |
ISO8601形式で時間を表示
(-Iオプション)
-Iオプションは、ISO8601形式(%Y-%m-%d)で時間を表示できます。
-Iオプションに追加で文字列を指定すると表示できる情報を増えます。
'hours'を指定すると時が、
'minites'を指定すると時・分が、
'seconds'を指定すると時・分・秒が、
'ns'を指定すると時・分・秒・ナノ秒の情報が追加で表示されます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ date -I 2018-02-10 $ date -Ihours 2018-02-10T15+09:00 $ date -Iminutes 2018-02-10T15:38+09:00 $ date -Iseconds 2018-02-10T15:38:11+09:00 $ date -Ins 2018-02-10T15:38:11,582563392+09:00 |
ファイルの修正時間を表示
(-rオプション)
-rオプションは、指定したファイルの修正時間を表示できます。
コマンド例と実行結果
1 2 3 4 5 |
$ls --full-time datefile.txt -rw-rw-r-- 1 ubuntu ubuntu 47 2018-02-10 15:25:40.388518001 +0900 datefile.txt $ $date -r datefile.txt -I'ns' 2018-02-10T15:25:40,388518001+09:00 |
電子メールに適した時間を表示
(-Rオプション)
-Rオプション(--rfc-emailオプション)は、RFC5322やRFC2822やRFC822で定められた電子メールに適した時間を表示します。
コマンド例
1 |
date -R |
実行結果
1 |
Sat, 10 Feb 2018 15:59:33 +0900 |
RFC3339形式の時間を表示
(--rfc-3339オプション)
--rfc-3339オプションを用いると、RFC3339で定められたインターネット上のタイムスタンプの形式で時間を表示できます。
また、--rfc-3339オプションは'date'、'seconds'、'ns'の文字列を指定する必要があります。
コマンド例と実行結果
1 2 3 4 5 6 7 8 |
$date --rfc-3339='date' 2018-02-10 $date --rfc-3339='seconds' 2018-02-10 16:06:58+09:00 $date --rfc-3339='ns' 2018-02-10 16:07:07.773304610+09:00 |
時間の文字列で時間を設定
(-sオプション)
-sオプションは、-dオプションで用いた時間の文字列を用いて、時間を設定できます。
コマンド例と実行結果
1 2 3 4 5 6 7 8 |
$date 2018年 2月 10日 土曜日 16:10:45 JST $ $sudo date -s '2009-8-22 8:00' 2009年 8月 22日 土曜日 08:00:00 JST $ $date 2009年 8月 22日 土曜日 08:00:01 JST |
協定世界時を利用
(-uオプション)
-u(--utc,--universal)オプションを用いると、dateコマンドは協定世界時(UTC)で時間を扱います。例えば、-uオプションを利用してdateコマンドを用いると、タイムゾーンがUTCになり、UTCに合わせた時間が表示されます。
コマンド例
1 |
date -u |
実行結果
1 |
2018年 2月 10日 土曜日 07:20:31 UTC |