GNU bug report logs -
#36383
date command processes timezone differently when doing math
Previous Next
Reported by: Brian Woods <bpwoods <at> gmail.com>
Date: Tue, 25 Jun 2019 23:23:02 UTC
Severity: normal
Tags: notabug
Done: Assaf Gordon <assafgordon <at> gmail.com>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 36383 in the body.
You can then email your comments to 36383 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-coreutils <at> gnu.org
:
bug#36383
; Package
coreutils
.
(Tue, 25 Jun 2019 23:23:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Brian Woods <bpwoods <at> gmail.com>
:
New bug report received and forwarded. Copy sent to
bug-coreutils <at> gnu.org
.
(Tue, 25 Jun 2019 23:23:06 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
When doing a math operation to a date command it appear to process the
timezone differently.
The system is Ubuntu 18.04.2 LTS.
Versions: coreutils/bionic,now 8.28-1ubuntu1 amd64 [installed]
#echo $datNow
2019-06-25 15:21:34
#date -d "$datNow " "+%Y-%m-%d %H:%M:%S" --debug
date: parsed date part: (Y-M-D) 2019-06-25
date: parsed time part: 15:21:34
date: input timezone: system default
date: using specified time as starting value: '15:21:34'
date: starting date/time: '(Y-M-D) 2019-06-25 15:21:34'
date: '(Y-M-D) 2019-06-25 15:21:34' = 1561501294 epoch-seconds
date: timezone: system default
date: final: 1561501294.000000000 (epoch-seconds)
date: final: (Y-M-D) 2019-06-25 22:21:34 (UTC)
date: final: (Y-M-D) 2019-06-25 15:21:34 (UTC-07)
2019-06-25 15:21:34
#date -d "$datNow + 1 minute" "+%Y-%m-%d %H:%M:%S" --debug
date: parsed date part: (Y-M-D) 2019-06-25
date: parsed time part: 15:21:34 UTC+01
date: parsed relative part: +1 minutes
date: input timezone: parsed date/time string (+01)
date: using specified time as starting value: '15:21:34'
date: starting date/time: '(Y-M-D) 2019-06-25 15:21:34 TZ=+01'
date: '(Y-M-D) 2019-06-25 15:21:34 TZ=+01' = 1561472494 epoch-seconds
date: after time adjustment (+0 hours, +1 minutes, +0 seconds, +0 ns),
date: new time = 1561472554 epoch-seconds
date: timezone: system default
date: final: 1561472554.000000000 (epoch-seconds)
date: final: (Y-M-D) 2019-06-25 14:22:34 (UTC)
date: final: (Y-M-D) 2019-06-25 07:22:34 (UTC-07)
[Message part 2 (text/html, inline)]
Information forwarded
to
bug-coreutils <at> gnu.org
:
bug#36383
; Package
coreutils
.
(Wed, 26 Jun 2019 14:38:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 36383 <at> debbugs.gnu.org (full text, mbox):
tag 36383 notabug
close 36383
stop
Hello,
On Tue, Jun 25, 2019 at 04:10:07PM -0700, Brian Woods wrote:
> When doing a math operation to a date command it appear to process the
> timezone differently.
[...]
>
> #echo $datNow
> 2019-06-25 15:21:34
>
> #date -d "$datNow + 1 minute" "+%Y-%m-%d %H:%M:%S" --debug
> date: parsed date part: (Y-M-D) 2019-06-25
> date: parsed time part: 15:21:34 UTC+01
> date: parsed relative part: +1 minutes
> date: input timezone: parsed date/time string (+01)
Thank you for providing detailed examples with "--debug",
makes things much easier to troubleshoot.
The issue is that a time string (HH:MM:SS) followed by a plus
sign and a number is *always* taken to be a time zone.
Using a value other than 1 will show it more clearly:
$ date -d "$datNow + 8 minutes" "+%Y-%m-%d %H:%M:%S" --debug
date: parsed date part: (Y-M-D) 2019-06-25
date: parsed time part: 15:21:34 UTC+08
date: parsed relative part: +1 minutes
date: input timezone: parsed date/time string (+08)
The "+8" part is treated as timezone,
and the remaining text ("minutes") is taken as a one-minute time
adjustment.
One solution is to just remove the plus sign:
$ date -d "$datNow 8 minutes" "+%Y-%m-%d %H:%M:%S" --debug
date: parsed date part: (Y-M-D) 2019-06-25
date: parsed time part: 15:21:34
date: parsed relative part: +8 minutes
date: input timezone: system default
[...]
2019-06-25 15:29:34
Another is to specify the time zone:
$ date -d "$datNow +00:00 +8 minutes" "+%Y-%m-%d %H:%M:%S" --debug
date: parsed date part: (Y-M-D) 2019-06-25
date: parsed time part: 15:21:34 UTC+00
date: parsed relative part: +8 minutes
date: input timezone: parsed date/time string (+00)
[...]
2019-06-25 09:29:34
More examples of adjusting time strings are here (your example is similar
to case #1):
https://lists.gnu.org/archive/html/bug-coreutils/2018-10/msg00126.html
As such, I'm closing this ticket but discussion can continue by replying
to this thread.
regards,
- assaf
Added tag(s) notabug.
Request was from
Assaf Gordon <assafgordon <at> gmail.com>
to
control <at> debbugs.gnu.org
.
(Wed, 26 Jun 2019 14:38:03 GMT)
Full text and
rfc822 format available.
bug closed, send any further explanations to
36383 <at> debbugs.gnu.org and Brian Woods <bpwoods <at> gmail.com>
Request was from
Assaf Gordon <assafgordon <at> gmail.com>
to
control <at> debbugs.gnu.org
.
(Wed, 26 Jun 2019 14:38:03 GMT)
Full text and
rfc822 format available.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Thu, 25 Jul 2019 11:24:12 GMT)
Full text and
rfc822 format available.
This bug report was last modified 4 years and 274 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.