DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(cvs.info.gz) Relative items in date strings

Info Catalog (cvs.info.gz) Day of week items (cvs.info.gz) Date input formats (cvs.info.gz) Pure numbers in date strings
 
 A.6.6 Relative items in date strings
 ------------------------------------
 
 "Relative items" adjust a date (or the current date if none) forward or
 backward.  The effects of relative items accumulate.  Here are some
 examples:
 
      1 year
      1 year ago
      3 years
      2 days
 
    The unit of time displacement may be selected by the string `year'
 or `month' for moving by whole years or months.  These are fuzzy units,
 as years and months are not all of equal duration.  More precise units
 are `fortnight' which is worth 14 days, `week' worth 7 days, `day'
 worth 24 hours, `hour' worth 60 minutes, `minute' or `min' worth 60
 seconds, and `second' or `sec' worth one second.  An `s' suffix on
 these units is accepted and ignored.
 
    The unit of time may be preceded by a multiplier, given as an
 optionally signed number.  Unsigned numbers are taken as positively
 signed.  No number at all implies 1 for a multiplier.  Following a
 relative item by the string `ago' is equivalent to preceding the unit
 by a multiplier with value -1.
 
    The string `tomorrow' is worth one day in the future (equivalent to
 `day'), the string `yesterday' is worth one day in the past (equivalent
 to `day ago').
 
    The strings `now' or `today' are relative items corresponding to
 zero-valued time displacement, these strings come from the fact a
 zero-valued time displacement represents the current time when not
 otherwise changed by previous items.  They may be used to stress other
 items, like in `12:00 today'.  The string `this' also has the meaning
 of a zero-valued time displacement, but is preferred in date strings
 like `this thursday'.
 
    When a relative item causes the resulting date to cross a boundary
 where the clocks were adjusted, typically for daylight saving time, the
 resulting date and time are adjusted accordingly.
 
    The fuzz in units can cause problems with relative items.  For
 example, `2003-07-31 -1 month' might evaluate to 2003-07-01, because
 2003-06-31 is an invalid date.  To determine the previous month more
 reliably, you can ask for the month before the 15th of the current
 month.  For example:
 
      $ 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!
 
    Also, take care when manipulating dates around clock changes such as
 daylight saving leaps.  In a few cases these have added or subtracted
 as much as 24 hours from the clock, so it is often wise to adopt
 universal time by setting the `TZ' environment variable to `UTC0'
 before embarking on calendrical calculations.
 
Info Catalog (cvs.info.gz) Day of week items (cvs.info.gz) Date input formats (cvs.info.gz) Pure numbers in date strings
automatically generated byinfo2html