[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

28.1 日付書式の一般ルール

日付 (date) は、空文字列のこともある文字列であり、空白 (whitespace) で区切られた多くの項目を含んでいる。各項目の意味に曖昧さが生じないなら、 空白は省略できる。空の文字列は、今日の始まり (すなわち、真夜中) を意味している。 項目の順序は重要ではない。日付文字列では、様々な種類の項目を指定することができる。

個々の項目については、次節以下で順番に説明する。

何番目かを示す序数の中には、現れる場所によっては、単語で表現できるものがいくつかある。 これは、曜日や相対的表現の項目を指定するとき、たいへん便利だ (下記参照)。 使用頻度のきわめて高い序数を取り上げると、‘last’ という単語は -1 を表し、‘this’ は 0 を、‘first’ と ‘next’ は両方とも 1 を表している。‘second’ という単語は時間の単位でもあるので、 序数の 2 を単語で表現する方法はない。だが、便宜を考えて、‘third’ は 3 を、‘fourth’ は 4 を、‘fifth’ は 5 を、‘sixth’ は 6 を、‘seventh’ は 7 を、‘eighth’ は 8 を、‘ninth’は 9 を、‘tenth’ は 10 を、‘eleventh’ は 11 を、‘twelfth’ は 12 を表すことになっている。

月がこの形で表現されたときも、やはり数値として (訳注: たとえば、今月から何ヶ月後と) 指定されたと見なされるのであって、月の名前の省略なしの表記と解釈されるわけではない (訳注: たとえば、third month を March の別名の完全表記とは考えない)。 そのため、March のような月名を使った場合とは、指定できる文字列が違ってくる。

現在の実装で使用できる単語は、英語の単語とその省略形のみである。 すなわち、‘AM’, ‘DST’, ‘EST’, ‘first’, ‘January’, ‘Sunday’, ‘tomorrow’, ‘year’ などだ。

date コマンドの出力だからと言って、必ずしも日付文字列としてプログラムに渡せるとはかぎらない。 言語の問題のせいばかりではない。‘IST’ のようなタイムゾーン項目には、標準的な意味が存在しないからでもある。 後でプログラムに構文解析をさせる予定の日付文字列を、date を使用して生成するのなら、日付の書式には、言語が何であるかに依存せず、‘UTC’ と ‘Z’ 以外のタイムゾーン項目を使用しないものを指定するべきだ。 それを行う方法をいくつか挙げておく。

 
$ LC_ALL=C TZ=UTC0 date
Mon Mar  1 00:21:42 UTC 2004
$ TZ=UTC0 date +'%Y-%m-%d %H:%M:%SZ'
2004-03-01 00:21:42Z
$ date --rfc-3339=ns  # --rfc-3339 は GNU の拡張。
2004-02-29 16:21:42.692722128-08:00
$ date --rfc-2822  # GNU の拡張。
Sun, 29 Feb 2004 16:21:42 -0800
$ date +'%Y-%m-%d %H:%M:%S %z'  # %z は GNU の拡張。
2004-02-29 16:21:42 -0800
$ date +'@%s.%N'  # %s と %N も GNU の拡張。
@1078100502.692722128

日付を指定する際、アルファベットの大文字と小文字は全く区別されない。 丸カッコで囲めば、コメントを入れることができる。ただし、丸カッコを入れ子にするときは、 開きカッコと閉じカッコがきちんと対応していなければならない。 数字が後に続かないハイフンは、現在のところ無視される。 また、数値の前に付けた 0 も無視される。

2005-02-29’ のような無効な日付や ‘24:00’ のような無効な時刻は、却下される。 閏秒をサポートしていないホストでは、‘23:59:60’ のような時刻は、 たとえ閏秒に正しく対応する値であっても、却下されるのが普通である。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on June 7, 2022 using texi2html 1.82.