tag 8648 + notabug close 8648 thanks Ondrej Vasik wrote: > On Tue, 2011-05-10 at 16:36 -0700, Turner, Neil wrote: >> Maybe found a bug in date... the following command: >> >> $ date --date="yesterday 00:00 +1 day" >> Mon May 9 16:59:00 PDT 2011 >> >> The date as I type this is May 10th... so I was expecting the output to be: >> Tues May 10 00:00:00 PDT 2011 > > First of all, please always report the version of coreutils where you > experience the unexpected behaviour. > > However - it is a tricky thing - you are human, you know what you have > meant by +1 ... but flex getdate parser is not a human - and it simply > parses the date format. In this case date format expects +1 is timezone > (and because I see the offset of 1 minute, I think you have quite old > version of coreutils). +1 is then implicit for the relative time offset > (you may consider date --date="yesterday 00:00 +3 day" to be even more > "buggy"). Not too much to do, date parser is very fragile and you will > always have this kind of disambiguations there. So there is only one > hint, make the format as complete as possible (date time timezone > offset)... > > With `date --date="yesterday 00:00 PDT +1 day"` you should get the date > you expected.
Thanks for the report, Neil, and for replying, Ondřej. Neil, if you run "info date example", you'll see pretty many examples. There are some here, too: http://www.gnu.org/software/coreutils/faq/coreutils-faq.html#The-date-command-is-not-working-right_002e BTW, simply removing the "+" should make date do what you want most of the time: $ date --date="yesterday 00:00 1 day" However, that may well fail around DST changes (as explained in detail via that FAQ), so you should use noon rather than midnight: $ date --date="yesterday 12:00 1 day" P.S. I've closed this ticket but you're welcome to continue discussing and even to reopen it if I've missed something.
