From: yan...@alpha2.csd.uwm.edu (Scott A Yanoff)
Subject: Why does strftime() nad others return in GMT?
Date: 1995/06/08
Message-ID: <3r7hpg$bl9@uwm.edu>#1/1
X-Deja-AN: 104034318
organization: University of Wisconsin - Milwaukee
reply-to: yan...@alpha2.csd.uwm.edu
newsgroups: alt.sys.sun,comp.sys.sun.admin,comp.sys.sun.misc,comp.unix.questions
originator: yan...@alpha2.csd.uwm.edu


I use strftime() and even if I just make a system call to the
date command, it always returns the date in GMT
(and I have TZ=US/Central)

I have even tried a shell script:

#!/bin/sh
TZ=US/Central
date

but it still returns in GMT...

any ideas?
I really aprpeciate any help..
-Scott Yanoff
-- 
 _/\ _ !\ _         @          Milwaukee, WI - A Great Place On a Great Lake
!  _! !! ! !_  ~~  @ ~  ~~         
! ! ! !! ! ! !~~__=||_~ ~~~ 
! ! ! _! ! ~~~ ~\____/  ~~~     yan...@csd.uwm.edu   yan...@cs.uwm.edu

From: b...@Starbase.NeoSoft.COM (Brad Morrison)
Subject: Re: Why does strftime() nad others return in GMT?
Date: 1995/06/08
Message-ID: <3r7rnp$o8n@Starbase.NeoSoft.COM>#1/1
X-Deja-AN: 104034330
references: <3r7hpg$bl9@uwm.edu>
organization: NeoSoft Internet Services   +1 713 968 5800
newsgroups: alt.sys.sun,comp.sys.sun.admin,comp.sys.sun.misc,comp.unix.questions

In article <3r7hpg$...@uwm.edu>,
Scott A Yanoff <yan...@alpha2.csd.uwm.edu> wrote:

>I use strftime() and even if I just make a system call to the
>date command, it always returns the date in GMT
>(and I have TZ=US/Central)

Where did you get "US/Central" for a $TZ value?  Am I out of date, or is
the format not CST6CDT (CST6CST if you don't want Daylight Savings Time)?

>I have even tried a shell script:

>#!/bin/sh
>TZ=US/Central
>date

Even if your $TZ value was correct (I don't know of a UNIX variant which
respects this notation, WTPE of AIX), you didn't export it; it remains
local and 'date' can't see it.

>but it still returns in GMT...

>any ideas?

Time for a scan of /usr/share/lib/zoneinfo:

1. ls -il /usr/share/lib/zoneinfo/localtime
   If this file is not found, link /usr/share/lib/zoneinfo/CST6CDT to it, along
   with /usr/share/lib/zoneinfo/US/Central (ah-HAH!  So, that's where you got
   that bogus TZ value...)
2. If the file *is* found, you can do some detective work: use the inode from
   'ls -il' above to find links to localtime, viz:
   find /usr -inum <number from above> -print

I suspect that there are no links, since GMT is a default.

>I really aprpeciate any help..
>-Scott Yanoff

No sweat; too bad this isn't in man pages.
-- 
"Push to test."         Brad Morrison: b...@neosoft.com, morri...@paranet.com
<click>                      "I put one in each eye and two up each nostril."
"Release to detonate."                                         --Agent Cooper

From: egg...@twinsun.com (Paul Eggert)
Subject: Re: Why does strftime() nad others return in GMT?
Date: 1995/06/08
Message-ID: <3r8a80$e92@spot.twinsun.com>#1/1
X-Deja-AN: 104034344
references: <3r7hpg$bl9@uwm.edu> <3r7rnp$o8n@Starbase.NeoSoft.COM>
organization: Twin Sun Inc, El Segundo, CA, USA
newsgroups: alt.sys.sun,comp.sys.sun.admin,comp.sys.sun.misc,comp.unix.questions

b...@Starbase.NeoSoft.COM (Brad Morrison) writes:

>Where did you get "US/Central" for a $TZ value?...
>(I don't know of a UNIX variant which respects this notation, WTPE of AIX)

SunOS/Solaris has supported TZ='US/Central' for quite some time.
This notation is a valid extension to the Posix standard for TZ.
It is very common among Unix variants (e.g. SVR4, 4.4BSD, Linux),
though some require TZ=':US/Central' because of a misinterpretation
of the Posix standard.

See <ftp://elsie.nci.nih.gov/pub/tz/> for the latest and greatest
timezone tables in the 'US/Central' tradition.  They're much
easier to use than Posix strings, particularly if your
daylight savings rules don't match the US's.

From: mbr...@austin.ibm.com (Mark Brown)
Subject: Re: Why does strftime() nad others return in GMT?
Date: 1995/06/09
Message-ID: <D9xB0y.ts3@austin.ibm.com>#1/1
X-Deja-AN: 104150633
sender: n...@austin.ibm.com (News id)
references: <3r7hpg$bl9@uwm.edu> <3r7rnp$o8n@Starbase.NeoSoft.COM> 
<3r8a80$e92@spot.twinsun.com>
organization: IBM Corp., Austin TX
newsgroups: alt.sys.sun,comp.sys.sun.admin,comp.sys.sun.misc,comp.unix.questions

> egg...@twinsun.com (Paul Eggert) writes:
>b...@Starbase.NeoSoft.COM (Brad Morrison) writes:
>>Where did you get "US/Central" for a $TZ value?...
>>(I don't know of a UNIX variant which respects this notation, WTPE of AIX)
>
>SunOS/Solaris has supported TZ='US/Central' for quite some time.
>This notation is a valid extension to the Posix standard for TZ.
>It is very common among Unix variants (e.g. SVR4, 4.4BSD, Linux),
>though some require TZ=':US/Central' because of a misinterpretation
>of the Posix standard.

Ummm. I don't think so. IEEE 1003.1-1990 is very clear on this point:
Section 8.1.1, lines 54 - 112 do *NOT* allow for what you say above. I
also know of *NO* interpretation (and I have a complete collection of
the published ones in front of me) that allows the behavior you
describe. There are two possible conforming formats, and yours ain't one
of them. In fact, 1003.1 Interp 41 makes it clear that the *only*
allowed format that does not begin with a ":" character is the "std
offset dst ..." one.

Now, certainly an implementation is allowed to support other TZ formats
-- but they are not POSIX formats.

BTW: AIX doesn't support this format ('US/Central') either.

cheers,
Mark Brown

-- 
Mark Brown     | AIX Architecture             |   Civil Liberty
(512) 838-3926 | 11400 Burnet Rd M/S 9582     |    Through
T/L   678-3926 | Austin, TX 78758             |     Complex Mathematics!
mbr...@austin.ibm.com  -or- MBROWN at AUSVM6  | 

From: egg...@twinsun.com (Paul Eggert)
Subject: Re: Why does strftime() nad others return in GMT?
Date: 1995/06/12
Message-ID: <3rj4vg$q1r@spot.twinsun.com>#1/1
X-Deja-AN: 104315003
references: <3r7hpg$bl9@uwm.edu> <3r7rnp$o8n@Starbase.NeoSoft.COM> 
<3r8a80$e92@spot.twinsun.com> <D9xB0y.ts3@austin.ibm.com>
organization: Twin Sun Inc, El Segundo, CA, USA
newsgroups: alt.sys.sun,comp.sys.sun.admin,comp.sys.sun.misc,comp.unix.questions

mbr...@austin.ibm.com (Mark Brown) writes:

>> egg...@twinsun.com (Paul Eggert) writes:
>>SunOS/Solaris has supported TZ='US/Central' for quite some time.
>>This notation is a valid extension to the Posix standard for TZ.
>>It is very common among Unix variants (e.g. SVR4, 4.4BSD, Linux),
>>though some require TZ=':US/Central' because of a misinterpretation
>>of the Posix standard.

>Ummm. I don't think so. IEEE 1003.1-1990 is very clear on this point:
>Section 8.1.1, lines 54 - 112 do *NOT* allow for what you say above.

Now I know why IBM does not support this useful extension -- the OS
lawyers got to you (:-).  But sorry, you (and apparently IBM) have
misinterpreted what Posix conformance means.  TZ='US/Central' is not
one of the forms listed in 8.1.1, so the implementation is free to
interpret TZ='US/Central' as an extension.

For further discussion on this issue, please see IEEE 1003.1-1990
section B.8.1.1, page 284, lines 4195-4201, which approvingly mentions
the TZ='US/Central' tradition under the name ``the Olson/Harris
method''.  The key point is that, so long as the Olson/Harris code
parses the Posix-mandated TZ strings correctly (which it does),
it can do what it likes with other strings like 'US/Central'.

While we're on the subject, vendors who ignore TZ-setting convenience
are missing the boat if they want to sell outside the US.  It is much
more convenient for a user in (for example) Israel to set
TZ='Asia/Tel_Aviv' than to try to figure out what hieroglyphics to put
into the silly Posix TZ string this year.  This is why Unix-like
systems are tending to support the Olson tables in one form or
another.  I know Unixware, Solaris, Nextstep, and Linux do, and I'm
sure there are others.

From: mbr...@austin.ibm.com (Mark Brown)
Subject: Re: Why does strftime() nad others return in GMT?
Date: 1995/06/13
Message-ID: <DA484p.9rJ@austin.ibm.com>#1/1
X-Deja-AN: 104314971
sender: n...@austin.ibm.com (News id)
references: <3r8a80$e92@spot.twinsun.com> <D9xB0y.ts3@austin.ibm.com> 
<3rj4vg$q1r@spot.twinsun.com>
organization: IBM Corp., Austin TX
newsgroups: alt.sys.sun,comp.sys.sun.admin,comp.sys.sun.misc,comp.unix.questions

What Paul says in this posting is correct...but it is not what he
claimed in his original posting, thus the followup....

> egg...@twinsun.com (Paul Eggert) writes:
>mbr...@austin.ibm.com (Mark Brown) writes:
>>> egg...@twinsun.com (Paul Eggert) writes:
>>>SunOS/Solaris has supported TZ='US/Central' for quite some time.
>>>This notation is a valid extension to the Posix standard for TZ.

It is (just as I said in my previous post on this subject) a valid
*implementation* extension, but this extension is not POSIX. You
snipped that part of my post...

>>>It is very common among Unix variants (e.g. SVR4, 4.4BSD, Linux),
>>>though some require TZ=':US/Central' because of a misinterpretation
>>>of the Posix standard.

They require it because they know it is conformant and portable under
POSIX, where TZ='US/Central' is not. This is not a misinterpretation.

They appear to have chosen to put development effort into something
other than non-portable extensions to TZ.

>>Ummm. I don't think so. IEEE 1003.1-1990 is very clear on this point:
>>Section 8.1.1, lines 54 - 112 do *NOT* allow for what you say above.
>
>Now I know why IBM does not support this useful extension -- the OS
>lawyers got to you (:-).  But sorry, you (and apparently IBM) have
>misinterpreted what Posix conformance means.  TZ='US/Central' is not
>one of the forms listed in 8.1.1, so the implementation is free to
>interpret TZ='US/Central' as an extension.

This is true, and I said it in my posting (the part you left out).

Whether or not AIX chooses to support Olson/Harris is an implementation
issue for IBM. IBM appears to have chosen to stick to known portable
behaviors in this area.

>For further discussion on this issue, please see IEEE 1003.1-1990
>section B.8.1.1, page 284, lines 4195-4201, which approvingly mentions
>the TZ='US/Central' tradition under the name ``the Olson/Harris
>method''.  The key point is that, so long as the Olson/Harris code
>parses the Posix-mandated TZ strings correctly (which it does),
>it can do what it likes with other strings like 'US/Central'.

This is what I said.

Please note, while you are at this, that Appendix B is Rationale, and
thus is not part of the Standard, and is not binding on the standard.

>While we're on the subject, vendors who ignore TZ-setting convenience
>are missing the boat if they want to sell outside the US.  It is much
>more convenient for a user in (for example) Israel to set
>TZ='Asia/Tel_Aviv' than to try to figure out what hieroglyphics to put
>into the silly Posix TZ string this year.

It may be convenient, but it sure isn't portable. Scripts that use this
are not going to work across systems.

cheers,
mark


-- 
Mark Brown     | AIX Architecture             |   Civil Liberty
(512) 838-3926 | 11400 Burnet Rd M/S 9582     |    Through
T/L   678-3926 | Austin, TX 78758             |     Complex Mathematics!
mbr...@austin.ibm.com  -or- MBROWN at AUSVM6  | 

From: egg...@twinsun.com (Paul Eggert)
Subject: Re: Why does strftime() nad others return in GMT?
Date: 1995/06/13
Message-ID: <3rki8r$qvu@spot.twinsun.com>#1/1
X-Deja-AN: 104314982
references: <3r8a80$e92@spot.twinsun.com> <D9xB0y.ts3@austin.ibm.com> 
<3rj4vg$q1r@spot.twinsun.com> <DA484p.9rJ@austin.ibm.com>
organization: Twin Sun Inc, El Segundo, CA, USA
newsgroups: alt.sys.sun,comp.sys.sun.admin,comp.sys.sun.misc,comp.unix.questions

mbr...@austin.ibm.com (Mark Brown) writes:

>>>> egg...@twinsun.com (Paul Eggert) writes:
>>>>It is very common among Unix variants (e.g. SVR4, 4.4BSD, Linux),
>>>>though some require TZ=':US/Central' because of a misinterpretation
>>>>of the Posix standard.

>They require it because they know it is conformant and portable under
>POSIX, where TZ='US/Central' is not. This is not a misinterpretation.

``Portable'' in what sense?  Posix does not define the behavior
of TZ=':US/Central', so it isn't ``portable'', in the sense that
Posix doesn't guarantee that it will work as desired.
If you really want a portable TZ string for US Central time, then you
must use a complicated TZ string.  (Posix does not guarantee that
TZ='CST6CDT' will do what you want -- you need a longer set of
hieroglyphics to be truly portable.)

Similarly, the Posix standard does not define the behavior of TZ='US/Central';
just as with TZ=':US/Central', it may do what you want, or it may not.
So a vendor who requires that users set TZ=':US/Central'
instead of the traditional TZ='US/Central', and who in response to
user complaints says ``Posix made me do it'', is misinterpreting
the standard: Posix does not require that the implementation reject
TZ='US/Central'.  This is the misinterpretation that I was objecting
to in the above quote.

>>While we're on the subject, vendors who ignore TZ-setting convenience
>>are missing the boat if they want to sell outside the US...

>It may be convenient, but it sure isn't portable.

There is generally a tradeoff between portability and convenience,
and users must choose one or the other.  In practice, more people
use nonportable TZ strings like 'US/Central' or 'CST6CDT' than use
portable ones like 'JST-9'.

It puzzles me that a few vendors still refuse to support convenience,
despite user requests, despite its widespread use by the competition,
despite a de facto standard, and despite the existence of public domain
source code for the de facto standard.  I know that it's just a small
convenience, but small conveniences add up....

From: g...@netapp.com (Guy Harris)
Subject: Re: Why does strftime() nad others return in GMT?
Date: 1995/06/13
Message-ID: <3rlbu8$j3g@nova.netapp.com>#1/1
X-Deja-AN: 104315028
references: <3r8a80$e92@spot.twinsun.com> <D9xB0y.ts3@austin.ibm.com> 
<3rj4vg$q1r@spot.twinsun.com> <DA484p.9rJ@austin.ibm.com>
organization: Network Appliance Corporation
newsgroups: alt.sys.sun,comp.sys.sun.admin,comp.sys.sun.misc,comp.unix.questions

Mark Brown <mbr...@austin.ibm.com> wrote:
>Whether or not AIX chooses to support Olson/Harris is an implementation
>issue for IBM.

I've no idea where this "Olson/Harris" stuff came from - yes, 1003.1
calls it that in the Rationale, but I've no idea where *they* got it
from - but, just to set the record straight, Arthur Olson, and perhaps
some others, deserve the credit for the idea; I thought (and still do
think) it's the Right Way To Implement Time Zones, so I joined in on
some of the implementation work (the first thing I did was to put the
files in a standard byte order), and got it into SunOS 4.0, but *I*
shouldn't be given any credit for the idea.

Arthur also did, by far, the bulk of the implementation, and plenty of
people other than me contributed to the implementation - I think some of
them contributed at least as much as I did, if not more.

>IBM appears to have chosen to stick to known portable behaviors in this
>area.

There is nothing "nonportable" about implementing both the POSIX syntax
and the Olson scheme.  A program that relies on the Olson scheme being
present may be nonportable, but very few programs rely on that.

(Are there, in fact, *any* programs or scripts that rely on the syntax
of TZ?  An example given by those who argued in favor of having POSIX
bother to standardize the syntax of TZ was "what about a program that
wants to use New York City time, e.g. because it deals with the stock
market", but, unless that program is re-released every time the time
zone rules in the USA change, it'd have to allow the user to specify the
time zone string - and, if so, it might as well just let you stick
"US/Eastern" or "America/New_York" or whatever in there.)

I.e., I see no reason why IBM gains from "sticking to known portable
behaviors in this area".  Heck, I even managed to beat AT&T into picking
the Olson stuff up for SVR4.0 - and it appears to be the *default*
scheme in SVR4.2.

From: mbr...@austin.ibm.com (Mark Brown)
Subject: Re: Why does strftime() nad others return in GMT?
Date: 1995/06/14
Message-ID: <DA63tK.qxz@austin.ibm.com>#1/1
X-Deja-AN: 104451303
sender: n...@austin.ibm.com (News id)
references: <3rj4vg$q1r@spot.twinsun.com> <DA484p.9rJ@austin.ibm.com> 
<3rki8r$qvu@spot.twinsun.com>
organization: IBM Corp., Austin TX
newsgroups: alt.sys.sun,comp.sys.sun.admin,comp.sys.sun.misc,comp.unix.questions

> egg...@twinsun.com (Paul Eggert) writes:
>mbr...@austin.ibm.com (Mark Brown) writes:
>``Portable'' in what sense?  Posix does not define the behavior
>of TZ=':US/Central', so it isn't ``portable'', in the sense that
>Posix doesn't guarantee that it will work as desired.

Truth.

>If you really want a portable TZ string for US Central time, then you
>must use a complicated TZ string.  (Posix does not guarantee that
>TZ='CST6CDT' will do what you want -- you need a longer set of
>hieroglyphics to be truly portable.)

Truth. But, the point remains, that you *can* guarantee portability with
a POSIX string. You cannot with yours.

>So a vendor who requires that users set TZ=':US/Central'
>instead of the traditional TZ='US/Central', and who in response to
>user complaints says ``Posix made me do it'', is misinterpreting
>the standard: Posix does not require that the implementation reject
>TZ='US/Central'.  This is the misinterpretation that I was objecting
>to in the above quote.

The Standard requires that an implementation *accept* certain inputs,
states how those inputs will be handled. The implementation is free to
*reject* all other inputs.

Hence, using a non-standard format risks non-portability.

>There is generally a tradeoff between portability and convenience,
>and users must choose one or the other.  In practice, more people
>use nonportable TZ strings like 'US/Central' or 'CST6CDT' than use
>portable ones like 'JST-9'.

Our European customers tend to prefer a fully-specified format:
	std offset dst offset Mm.n.d/time,Mm.n.d/time

because it *always* works. I know this because I have had to fix bugs we
had in AIX related to this.

>It puzzles me that a few vendors still refuse to support convenience,
>despite user requests, despite its widespread use by the competition,
>despite a de facto standard, and despite the existence of public domain
>source code for the de facto standard.  I know that it's just a small
>convenience, but small conveniences add up....

I can support the Standard format, or confuse my customers, and dilute
my resource, supporting every new format that comes along....

cheers,
mark

-- 
Mark Brown     | AIX Architecture             |   Civil Liberty
(512) 838-3926 | 11400 Burnet Rd M/S 9582     |    Through
T/L   678-3926 | Austin, TX 78758             |     Complex Mathematics!
mbr...@austin.ibm.com  -or- MBROWN at AUSVM6  | 

From: egg...@twinsun.com (Paul Eggert)
Subject: Re: Why does strftime() nad others return in GMT?
Date: 1995/06/15
Message-ID: <3rqdjo$6j6@spot.twinsun.com>#1/1
X-Deja-AN: 104451334
references: <3rj4vg$q1r@spot.twinsun.com> <DA484p.9rJ@austin.ibm.com> 
<3rki8r$qvu@spot.twinsun.com> <DA63tK.qxz@austin.ibm.com>
organization: Twin Sun Inc, El Segundo, CA, USA
newsgroups: alt.sys.sun,comp.sys.sun.admin,comp.sys.sun.misc,comp.unix.questions

mbr...@austin.ibm.com (Mark Brown) writes:

>Our European customers tend to prefer a fully-specified format:
>	std offset dst offset Mm.n.d/time,Mm.n.d/time
>because it *always* works. I know this because I have had to fix bugs we
>had in AIX related to this.

... which meant that it doesn't *always* work.  (:-)
I'm afraid old AIX systems are not the only ones with bugs in this area.
For a maximally portable real-world application that needs to set TZ,
it's better to try the Olson extension first,
and fall back on Posix if the host doesn't support it.
This is more portable than assuming either Posix or Olson.
If you're a system administrator who is setting the default timezone of a host,
it's better to use the Olson extension if it's supported on that host.

One reason for preferring the Olson extension
is that straight Posix doesn't *always* work --
for example, it fails to handle the previous year's times correctly
if the political authorities have changed time zone rules since then,
or if the rules don't fit into the Posix straightjacket
(which happens in places like Britain and Israel).
The Olson extension doesn't have this problem.

>I can support the Standard format, or confuse my customers,....

I've found that most customers are more confused
by the standard Posix format than by the Olson extension.
For example, I would say that most customers in Israel
are less confused by entering something like 'Asia/Tel_Aviv',
than by having to enter some complicated TZ value like, er, ...
(what exactly is this year's correct Posix string for Israel again? :-)
and worse, having to enter a new TZ value every year.

>and dilute my resource, supporting every new format that comes along....

This may be exaggerating the difficulties a bit.
No other TZ format has been seriously proposed.
It's not much work to add support for the Olson extension,
since the Olson code is public domain, and is widely used by other vendors.
I don't think the extension dilutes their resources in any real way;
on the contrary, I expect that it pays for itself
by reducing the burden on their customer support.