bug-gawk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: use of TZ by mktime()/strftime()


From: Ed Morton
Subject: Re: use of TZ by mktime()/strftime()
Date: Tue, 9 Aug 2022 12:17:43 -0500
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.1.0

Hmm, I just noticed that `date` behaves the same way gawk does when we set TZ in the environment rather than specify the timezone on the timestamp:

   $ TZ=EST date +'%s' -d '2022-01-01T12:00:00'
   1641056400

   $ TZ=UTC date +'%s' -d '2022-01-01T12:00:00'
   1641038400

   $ TZ=IST date +'%s' -d '2022-01-01T12:00:00'
   1641038400

   $ date +'%s' -d '2022-01-01T12:00:00 IST'
   1641018600

So in the above setting TZ to EST or UTC worked and specifying IST at the end of the timestamp worked, but setting TZ to IST failed just like it does in gawk. Clearly I'm missing something...

    Ed.

On 8/9/2022 11:18 AM, Ed Morton wrote:
I doubt if this is a bug, but if not I'd like to understand it better. When I want to print the UTC time from a time saved in some other timezone I can do:

   $ TZ=UTC

then run `date` as:

   $ date +'%F %T' -d '2022-01-01T12:00:00 EST'
   2022-01-01 17:00:00

   $ date +'%F %T' -d '2022-01-01T12:00:00 IST'
   2022-01-01 06:30:00

When I try the equivalent with `gawk`, though, the results vary depending on which TZ value is used:

   $ awk 'BEGIN{ENVIRON["TZ"]="EST"; s=mktime("2022 01 01 12 00 00");
   ENVIRON["TZ"]="UTC"; print strftime("%F %T",s)}'
   2022-01-01 17:00:00

   $ awk 'BEGIN{ENVIRON["TZ"]="IST"; s=mktime("2022 01 01 12 00 00");
   ENVIRON["TZ"]="UTC"; print strftime("%F %T",s)}'
   2022-01-01 12:00:00

Note that the date command worked for EST and IST but the awk one only worked for EST. I'm using gawk 5.1.1 on both cygwin and MacOS and I see that effect with a few other TZ values I've tried.

What is causing awk to act on some TZ values but not others that date can act on? Is there any way for me to test if a given TZ will work in awk?

    Ed.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]