次: , 前: Day of week items, 上: Date input formats


27.6 日付文字の相対的な項目

相対的な項目(Relative items)は,日付(それが無い場合は現在の日付) を前後に調整します.相対的な項目の効果は蓄積されます.以下にいくつか例 があります.

     1 year
     1 year ago
     3 years
     2 days

時間の置換の単位は,年や月全体を移動するため,文字列`year'や `month'が選択できます.年や月は全てが同じ期間ではないので,これら は曖昧な単位です.より正確な単位は,14日と等価な`fortnight',7日 と等価な`week',24時間と等価な`day',60分と等価な`hour', 60秒と等価な`minute'や`min',そして1秒と等価な`second' や`sec'です.これらの単位の`s'接尾子は受け入れられ,無視され ます.

時間の単位は乗数を前置でき,それは追加の符号付きの数字で与えられます. 符号無しの数字は,正の符号として扱われます.全く数字が無いものは,乗数 として1が暗示されます.文字列`ago'が続く相対的な項目は,値 -1の乗数が前置された単位と等価です.

文字列`tomorrow'は,未来の1日と等価で(`day'と等価),文字列 `yesterday'は,過去の1日と等価です(`day ago'と等価).

文字列`now'や`today'は,ゼロ値の時間を置換する相対的な項目で, これらの文字列は,ゼロ値の時間を置換することが前の項目で変化されていな いときの現在時間を表現するという事実に由来します.それらは`12:00 today'のように,他の項目を強調するために使用できます.文字列 `this' もゼロ値の時間を置換する意味を持ちますが,`this thursday'のような日付文字列で好まれます.

相対的な項目が,調整された時刻を跨るために結果として日付が生成されると き,特に夏時間では,結果として生じる日付と時間は,それに応じて調整され ます.

曖昧な単位は相対的な項目では問題になるはずです.例えば, `2003-07-31 -1 month'は,2003-06-31が有効な日付ではないので, 2003-07-01と評価される可能性があります.直前の月の決定をより信頼性のあ るものにするため,現在の月の15日前の月を尋ねることが可能です.例えば以 下のようにします.

     $ date -R
     Thu, 31 Jul 2003 13:02:39 -0700
     $ date --date="-1 month" +'Last month was %B?'
     Last month was July?
     $ date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!'
     Last month was June!

同様に,昼間の時刻合わせのような,時刻の変化を用いて日付を操作するとき も注意して下さい.現在の時刻から24時間以上追加または削除する状況があり, 日付計算を開始する前に,TZ環境変数を`UTC0'に設定することで, 標準時に対応しておいたほうがよいでしょう.