スポンサーリンク

DATE(1) FreeBSD 一般コマンドマニュアル DATE(1)

名称

date − 日付と時刻の表示、設定

書式

date [−ju] [−r seconds] [

                                −v [+|-]val[ymwdHMS]] ... [+output_fmt]

date [−jnu] [[
[
[
[
cc
]yy]mm]dd]HH]MM[.ss]
date
[−jnu] −f input_fmt new_date [+output_fmt]
date
[−d dst] [−t minutes_west]

解説

引数なしで実行すると、 date ユーティリティは現在の日付と時刻を表示しま す。引数を与えると、 date は、オプションの指定に応じて、日時の設定、ある いはユーザが定義した書式に従った日付や時刻の表示を行います。

date ユーティリティは、カーネルクロックから読み取った日付と時刻を表示しま す。日付と時刻の設定に使用された場合、カーネルクロックとハードウェアク ロックの両方が更新されます。

なお、日付と時刻を設定できるのはスーパユーザだけです。システムのセキュリ ティレベル (securelevel(8) を参照) が 1 より大きい場合、1 秒を越える時刻 修正は許されません。

オプション:

       −d dst

夏時間用のカーネル値を設定します。もし dst が 0 でなければ、その あとの gettimeofday(2) 呼び出しで、 tz_dsttime に 0 以外の値が返 ります。

−f
デフォルトの [
[
[
[
[
cc
]yy]mm]dd]HH]MM[.ss] 書式の代りに input_fmt を、 new_date をパーズする書式として使用します。パーズ には、 strptime(3) を使用します。

−j
日付の設定を行いません。本フラグを使用し、 −f フラグを + オプショ ンとともに用いることで、日付の書式の変換ができます。

−n
timed(8) が動作している場合、デフォルトでは date コマンドによりグ ループ内のすべてのマシンの時刻が変更されます。しかし、 −n オプ ションを指定した場合には、他のマシンの時刻は変更せず、このマシン のみで時刻を設定します。

−r seconds
seconds
が示す日時を表示します。ここで seconds は、基準時点 (UTC の 1970 年 1 月 1 日 00:00:00; time(3) 参照) からの秒数であり、 10 進数、8 進数、16 進数のいずれの指定も可能です。

−t minutes_west
カーネルに GMT (グリニッジ標準時) からの時差を設定します。 minutes_west は、このあとに呼ばれる gettimeofday(2) で、 tz_minuteswest に返される分の数を指定します。

−u
UTC (協定世界時) の日付を表示、設定します。

−v
秒、分、時、日、曜日、月、年のいずれかを val にもとづき修正します (すなわち、現在の日付を取得し、修正した結果を表示します。日付を設 定するのではありません)。 val の前にプラスもしくはマイナスが付い ている場合、時刻はそれに従い前後に修正されます。そうでない場合 は、指定した部分が設定されます。このフラグを使用した修正は、必要 な数だけ指定できます。フラグは指定した順序に処理されます。

(値を修正するのではなく) 値を指定する場合、秒の範囲は 0-59、分の 範囲は 0-59、時の範囲は 0-23、日の範囲は 1-31、曜日の範囲は 0-6 (Sun-Sat)、月の範囲は 1-12 (Jan-Dec)、年の範囲は 80-38 もしくは 1980-2038 です。

val が数値の場合、 y, m, w, d, H, M, S のいずれかを使用して、時刻 のどの部分を修正するのかを指定する必要があります。

曜日もしくは月は数値の代りに名前で指定可能です。名前と共にプラス (もしくはマイナス) 記号を使用した場合、日付は適合する次の (前の) 曜日もしくは月に進みます (戻ります)。曜日もしくは月が現在のものと 変らない場合、日付は修正しません。

特定の値に時刻を修正する場合や、単位が 1 時間よりも大きい場合に は、夏時間は考慮に入れられません。 1 時間以下の単位での修正は、夏 時間を考慮します。現在の時刻を 3 月 26 日 0:30 であり、夏時間の修 正により 01:00 から 02:00 へ進むとすると、 −v +1H により時刻を 3 月 26 日 2:30 へ修正します。同様に、現在の時刻が 10 月 29 日 0:30 であり、夏時間の修正により 02:00 から 01:00 へ戻るとすると、 −v +3H により時刻は 10 月 29 日 2:30 になります。

存在しない値を指定して (例えば、ヨーロッパ/ロンドンのタイムゾーン で 2000 年 3 月 26 日 1:30 BST) 時刻を修正する場合、正当な時刻に なるまで、時刻は黙って 1 時間の単位で進められます。 2 回存在する 特定の値 (例えば 2000 年 10 月 29 日 1:30) へ時刻を修正する場合、 最終的なタイムゾーンは、 2 回の時刻のうち早いものに適合するものと なります。

月は、現在の日付により長さが変わる時間単位ですから、月単位で日付 を調整することは、本質的にあいまいです。この種の日付調整は、最も 直観的な方法により適用されます。まず最初に、 date は月中の日付を 保存しようとします。目標の月が現在の月より短く日付保存が不可能な 場合、目標月の最終日になります。例えば、5 月 31 日に −v +1m を適 用すると、日付は 6 月 30 日になります。一方、1 月 30 日に同じオプ ションを適用すると、日付は 2 月最終日になります。このアプローチは シェルスクリプトのおいても最も意味がある方法だと考えられていま す。それでも、同じだけの月数を前後に移動する場合、異なる日付に なってしまうかもしれないことには注意してください。

詳細に関しては、下記の例を参照して下さい。

プラス (‘+’) で始まるオペランドは、ユーザ定義の書式文字列で、日付と時刻の 表示方法を指定します。書式文字列には、 strftime(3) マニュアルページに記載 される任意の変換指定と、任意のテキストを含むことができます。書式文字列に よって指定された文字の出力の後には、つねに改行文字 (‘\n’) が出力されま す。デフォルトの表示形式は、 ‘‘+%+’’ です。

もし、引数がプラス記号で始まる文字列でなければ、それはシステムに日時を設 定するための値と解釈されます。日時を設定するための正式な表現は以下のとお りです:

cc
世紀 (19 または 20 のいずれか) であり、西暦の省略表現の前に 付きます。
yy

西暦の省略表現です (1989 年なら 89、06 なら 2006)。
mm

月の数字表現です。 1 から 12 までの数字です。
dd

日です。 1 から 31 までの数字です。
HH

時です。 0 から 23 までの数字です。
MM

分です。 0 から 59 までの数字です。
ss

秒です。 0 から 61 までの数字です (59 秒 + 2 秒までのうるう 秒)。

分の指定以外はすべて省略可能です。

夏時間と標準時の切り替えや、閏秒や閏年の取り扱いは自動的に行われます。

使用例

以下のコマンド:

date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"

は、下のような表示を行います。

      DATE: 1987-11-21
      TIME: 13:36:16

ヨーロッパ/ロンドンのタイムゾーンでは、以下のコマンド:

date -v1m -v+1y

は以下を表示します:

Sun Jan 4 04:15:24 GMT 1998

(現在 Mon Aug 4 04:15:24 BST 1997 の場合)。

以下のコマンド:

date -v1d -v3m -v0y -v-1d

は 2000 年 2 月の最後の日を表示します:

Tue Feb 29 03:18:00 GMT 2000

以下のコマンドで、これと同じことができます。

date -v30d -v3m -v0y -v-1m

これは、2 月 30 日のような日は存在しないからです。

以下のコマンド:

date -v1d -v+1m -v-1d -v-fri

は今月最後の金曜日を表示します:

Fri Aug 29 04:31:11 BST 1997

(現在 Mon Aug 4 04:31:11 BST 1997 の場合)。

以下のコマンド:

date 8506131627

は、 ‘‘1985 年 6 月 13 日午後 4 時 27 分’’ に日時を設定します。

date "+%Y%m%d%H%M.%S"

をあるマシンで使用し、別のマシンでの時刻設定に使用可能です (Linux では "+%m%d%H%M%Y.%S" を使うとよいでしょう)。

以下のコマンド:

date 1432

は、日付を修正することなく、時刻だけを 午後 2 時 32 分に設定します。

最後に、コマンド:

date -j -f "%a %b %d %T %Z %Y" "‘date‘" "+%s"

は、 date の出力の解析を行い、基準時点 (Epoch time) 形式で表現します。

環境変数

date の実行は以下の環境変数の影響を受けます。

       TZ

日時を表示する際に用いられるタイムゾーンを設定します。通常の書式 は /usr/share/zoneinfo からの相対パス名です。例えば、コマンド ‘‘TZ=America/Los_Angeles date’’ はカリフォルニアの現在の時刻を表 示します。詳しいことは、 environ(7) を参照してください。

関連ファイル

       /var/log/wtmp

日付のリセットおよび時刻変更の記録がこのファイルに残さ れます。
/var/log/messages
日付を変更したユーザの記録がこのファイルに残されます。

関連項目

gettimeofday(2), strftime(3), strptime(3), utmp(5), timed(8)

       R. Gusella and                        S. Zatti,                                    TSP: The Time Synchronization Protocol forUNIX 4.3BSD.

診断

date ユーティリティは、成功した場合は 0 を、日時を設定できなかった場合は 1 を、ローカルマシンの設定はできたが、グローバルマシン全体の設定に失敗し た場合は 2 を返します。

timed(8) が多数のマシンの時計をあわせる場合には、新しい時刻のセットに数秒 かかることがあります。このとき date は、 ‘Network time being set’ と表示 します。 datetimed(8) との間で通信に失敗した場合は、 ‘Communication error with timed’ が表示されます。

規格

date ユーティリティは IEEE Std 1003.2 (‘‘POSIX.2’’) 互換であると想定して います。

歴史

date コマンドは Version 1 AT&T UNIX から導入されました。

FreeBSD 10.0 August 9, 2004 FreeBSD 10.0

スポンサーリンク