On Mon, 8 Mar 2010, gaosh wrote:
I use the command: date +%Y%m%d%H -d "1990-04-13 12 36 hours"
But I get the result: 1990041501 ! The correct one should be 1990041500.
The result depends on your system's local timezone, which I assume is
set to Asia/Shanghai or equivalent Chinese location. 1990-04-14 was a
day when daylight saving time began, so you're seeing the extra hour
gained. This is more obvious if you use the %z display option to see
the UTC offset:
$ TZ=Asia/Shanghai date '+%Y%m%d%H %z' -d '1990-04-13 12 35 hours'
1990041423 +0800
$ TZ=Asia/Shanghai date '+%Y%m%d%H %z' -d '1990-04-13 12 36 hours'
1990041501 +0900
So this is not a bug, but a hazard of making precise date calculations
around DST boundaries. Please read the FAQ discussion here:
http://www.gnu.org/software/coreutils/faq/coreutils-faq.html#The-date-command-is-not-working-right_002e
Cheers,
Phil