Subject: Re: bug#11098: date --yesterday wrong result
From: Eric Blake <[email-masked]>
To: Hugo Guérineau <[email-masked]>
Cc: [email-masked]
Date: Mon, 26 Mar 2012 11:31:57 -0600
List-Id: <debbugs-submit.debbugs.gnu.org>

tag 11098 notabug
thanks

On 03/26/2012 05:31 AM, Hugo Guérineau wrote:
> Dear Mister, Madam,
> 
> I'm writing to report a date computation problem.
> 
> The command "date --date='yesterday' +%Y-%m-%d" launched this morning
> between 0:00 am and 0:59 am gives the wrong result:
> 
> root@serveur:> date --date='today' +%Y-%m-%d; date --date='yesterday'
> +%Y-%m-%d
> 2012-03-26
> 2012-03-24
> 
> This is caused by the system clock changes which happened last night.

Thanks for the report.  However, this is not a bug in date, but in your
expectations.  'yesterday' translates to '24 hours ago', and due to your
daylight savings swap, 24 hours ago really does put you into a different
date.  As recommended in our FAQ,

https://www.gnu.org/software/coreutils/faq/#The-date-command-is-not-working-right_002e

it's almost always better to base relative time computations off of noon
rather than midnight (as both 11 am and 1 pm fall in the same day, even
when your multiple-of-24-hours crosses a 23-hour or 25-hour day).

-- 
Eric Blake   [email-masked]    +1-919-301-3266
Libvirt virtualization library http://libvirt.org