Next: , Previous: Day of week items, Up: 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’に設定することで, 標準時に対応しておいたほうがよいでしょう.