[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
日付 (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.