kazmax - Linux で自宅サーバー

date - コマンド (プログラム) の説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. オプション
  5. 注意

名前

date - システムの日付と時刻を表示・設定する

書式

date [-uR] [-d datestr ] [-f datefile ] [-r file ] [-s datestr ] [-I [ timespec ]] [--date= datestr ] [--file= datefile ] [--iso-8601[= timespec ]] [--reference= file ] [--set= datestr ] [--rfc-822] [--universal] [--utc] [+ format ] [ MMDDhhmm
date [--help] [--version]

説明

date は引数を指定しないと、現在の時刻と日付を表示する (表示形式は `%a %b %e %H:%M:%S %Z %Y' となる。以下を参照のこと)。

引数が指定され、かつその先頭が `+' で始まっておらず、 かつ実行者が適切な権限を持っていれば、 date はシステムの時計を引数で指定された時刻・日付に設定する。 --date および --set の両オプションは、このような引数と一緒に用いることはできない。 --universal オプションをこのような引数とともに用いると、 指定した時刻・日付が (地方時ではなく) 協定世界時のものになる。 引数には数字だけを用いることができ、それぞれ以下の意味を持つ:

MM
DD
日 (月内通算)
hh
mm
CC
年の最初の 2 桁 (省略可)
YY
年の最後の 2 桁 (省略可)
ss
秒 (省略可)

指定された引数が `+' で始まる場合には、 date は現在の時刻と日付を表示する (あるいは --date オプションで指定された時刻と日付を指定する)。 表示形式はこの引数によって制御され、 引数の書式は   strftime (3) 関数にわたす文字列の書式と同じである。 %' で始まるフィールドを除き、 format 文字列中の文字はそのまま変更されずに表示される。

時刻フィールド

%H
時 (00..23)
%I
時 (01..12)
%k
時 (0..23)
%l
時 (1..12)
%M
分 (00..59)
%p
AM あるいは PM のロケール
%r
時刻、12 時間 (hh:mm:ss [AP]M)
%s
1970-01-01 00:00:00 UTC からの秒数 (標準外の拡張)
%S
秒 (00..60)
%T
時刻、24 時間 (hh:mm:ss)
%X
ロケールによる時刻の表現 (%H:%M:%S)
%Z
タイムゾーン (例 EDT)、 あるいはタイムゾーンが決定できないならば無し

日付フィールド

%a
ロケールの省略形の曜日名 (Sun..Sat)
%A
ロケールの完全表記の曜日名、可変長 (Sunday..Saturday)
%b
ロケールの省略形の月名 (Jan..Dec)
%B
ロケールの完全表記の月名、可変長 (January..December)
%c
ロケールの日付と時刻 (Sat Nov 04 12:02:33 EST 1989)
%d
月内通算日数 (01..31)
%D
日付 (mm/dd/yy)
%h
%b と同じ
%j
年内通算日数 (001..366)
%m
月 (01..12)
%U
日曜日を週の最初の日とした年内通算週 (00..53)
%w
週のうちの曜日 (0..6) (0 が日曜日)
%W
月曜日を週の最初の日とした年内通算週 (00..53)
%x
ロケールの日付表現 (mm/dd/yy)
%y
年の最後の 2 つの数字 (00..99)
%Y
年 (1970...)

文字フィールド

%%
文字 %
%n
改行
%t
水平タブ

文字埋め (padding)

デフォルトでは、 date は数値のフィールドを 0 で埋める。したがって、例えば 数値表示の月は常に 2 桁で出力される。 GNU は date の機能を拡張しており、以下の非標準の数値修正子を `%' と フィールドの間に置くことができる:

-
(ハイフン) フィールドを埋めない。 出力が人に読まれる場合には便利である。
_
(アンダースコア) フィールドをスペースで埋める。 出力に決まった数の文字が必要だが、0 を使いたくない場合に便利である。

オプション

-d datestr , --date datestr
現在の時刻・日付の代わりに、 datestr で指定された時刻・日付を表示する。 datestr は普通のフォーマットならだいたいなんでも使うことができる。 月名、タイムゾーン、`am' や `pm' なども用いてよい。
-f datefile , --file= datefile
-d とともに指定された datefile を 1 行ずつパースして、結果の時刻と日付を表示する。 datefile が `-' の場合は標準入力が用いられる。 これは、たくさんの日付を処理しなければならない場合に便利である。 date の実行ファイルを何回も起動するオーバーヘッドは無視できないからである。
-r file , --reference= file
表示する時刻と日付を file の最終修正時刻にする。
-s datestr , --set datestr
時刻と日付を datestr に設定する。上述の -d を見よ。成功すると 0 を返し、失敗すると 0 以外を返す。
-u, --universal, --utc
タイムゾーンが地方時 (壁時計の時刻) ではなく UTC0 (協定世界時、これはグリニッジ平均時もしくは GMT として知られている) に 設定されたものとする。
-I [timespec], --iso-8601[=timespec]
日付を ISO 8601 で指定されている書式 `%Y-%m-%d' で、 時刻を timespec で指定されている形式で表示する (後者のデフォルトは auto )。時刻部分の表示には `T' が前置され、`%z' ( --utc が指定されている場合には `%Z') が後置される。

auto
時刻を表示しない。
hours
その日の時刻を表示する。
minutes
時・分を表示する。
seconds
時・分・秒を表示する。

-R, --rfc-822
時刻と日付を RFC-822 で指定された書式である `%a, %_d %b %Y %H:%M:%S %z' で表示する。 --utc が同時に指定されると、`%z' の代わりに `GMT' を用いる。 日付と月の名前は `C' ロケールに基づいて表示される。
--help
標準出力に使用方法のメッセージを出力して正常終了する。
--version
標準出力にバージョン情報を出力して正常終了する。

一昨日の日付を表示するには:

   date --date ´2 days ago´

3 ヶ月と 1 日後の日付を表示するには:

   date --date ´3 months 1 day´

今年のクリスマスが年の初めから何日目かを表示するには:

   date --date ´25 Dec´ +%j

完全な月名と日付からなる書式で今日を表示するには:

   date ´+%B %d´

しかしこの結果はお望みのものではないかもしれない。 なぜなら月の最初の 9 日を表示させるとき、%d は 2 桁のフィールドの 最初を 0 で埋めるからである。例えば date -d 1-may +%B %d の結果は May 01 となる。

同じ日を、1 桁の日付の前に 0 を置かないように表示するには、 標準にはない - 修正子を用いて 0 埋めを行わないようにすればよい。

   date -d 1-may ´+%B %-d´

注意

プログラムのバグについては bug-sh-utils@gnu.org に報告してください。 ページの更新は Ragnar Hojland Espinosa <ragnar@ragnar-hojland.com> が行っています。