相対的な項目(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'に設定することで, 標準時に対応しておいたほうがよいでしょう.