Subject: Re: bug#10413: Invalid date result in specific date operations
From: Eric Blake <[email-masked]>
To: Vicente Pérez M <[email-masked]>
Cc: [email-masked]
Date: Sat, 31 Dec 2011 15:39:58 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

tag 10413 notabug
thanks

On 12/29/2011 11:02 AM, Vicente Pérez M wrote:
> How to repeat:
> 
> 
> date -d '2011-08-21 + 1 DAY' +%Y-%m-%d
> date -d '2010-10-10 + 1 DAY' +%Y-%m-%d
> 
> These dates is just when change from normal time UTC-4 to dts UCT-3
> 
> result: invalid date
> 
> The same operation with --utc works fine.
> date -d '2011-08-21 + 1 DAY' +%Y-%m-%d --utc
> date -d '2010-10-10 + 1 DAY' +%Y-%m-%d --utc

Thanks for the report.  You failed to mention your exact TZ settings,
although you hinted at it via 'dts UTC-3', but the behavior you observed
is by design and not a bug.  In particular time zones, attempts to land
in a time that falls during the skipped hour are rejected, and using UTC
(which has no daylight savings) is a correct way to avoid the issue.
Another way is to pinpoint times to noon rather than the default of
midnight (no known time zone has a daylight savings transition at noon),
since your particular time zone appears to be among those zones where
the daylight savings rules kick in at midnight:

date -d '2011-08-21 12:00pm + 1 day' +%Y-%m-%d

More on this topic can be found in the FAQ:
https://www.gnu.org/software/coreutils/faq/#The-date-command-is-not-working-right_002e

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