Date show time off by 1 hour, if at previous day it's was timezone change. E.g.: sh@hoth:~/ > date Mon Mar 31 00:43:49 CEST 2008 sh@hoth:~/ > date -d '1 day ago' Sat Mar 29 23:43:47 CET 2008 sh@hoth:~/ > date -d '2 hours ago' Sun Mar 30 22:44:58 CEST 2008 sh@hoth:~/ > date --version date (GNU coreutils) 6.10 But, if it's past 01:00 day after timezone change, it shows correct time: sh@hoth:~/ > date Mon Mar 31 01:35:00 CEST 2008 sh@hoth:~/ > date -d '1 day ago' Sun Mar 30 00:35:02 CET 2008 I can see in logs that timezone was changed at 2:00 to 3:00. This is glibc-2.7. Older glibc (2.3.5) and coreutils (5.2.1) doesn't have this bug. It looks like it internally change date at midnight, not 2:00. It should display missing hour according to timezone.
Past 1:00 it shows incorrect date still, my mistake.
You have to provide a test program using only glibc functions. I won't hunt down problems in external programs like date.
Frankly, I don't even get at all from the original report what the problem was, the information shown looks correct to me.