Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site ut-sally.UUCP Path: utzoo!decvax!decwrl!amdcad!lll-crg!mordor!ut-sally!std-unix From: std-unix@ut-sally.UUCP (Moderator, John Quarterman) Newsgroups: mod.std.unix Subject: POSE proposal for TZ Message-ID: <4168@ut-sally.UUCP> Date: Tue, 11-Feb-86 23:07:42 EST Article-I.D.: ut-sally.4168 Posted: Tue Feb 11 23:07:42 1986 Date-Received: Wed, 12-Feb-86 20:01:53 EST Organization: IEEE/P1003 Portable Operating System Environment Committee Lines: 127 Approved: jsq@sally.UUCP >From: seismo!hao!asgb!benish!devine Date: Tue, 11 Feb 86 11:21:51 mst Hi, here is a letter that I sent to the IEEE mailing address for POSE proposals. It deals with timezones and Daylight Saving Time rules and how to incorporate them portably into a UNIX environment. Its advantages are: follows System III/V model; allows users and programs to override system timezone information; works for all present country TZ and DST rules; and flexibility. Bob Devine; 3133 Lake Park Way; Longmont, CO 80501; (303) 772-2410 (seismo!hao!asgb!devine sdcrdcf!bmcg!asgb!devine) --------------------------------------------------------------------- Secretary, IEEE Standards Board Institute of Electrical and Electronics Engineers 345 East 17th Street New York, NY 10017 This is a suggested resolution for the handling of world timezones and Daylight Saving Time for the P1003/Portable Operating System Environment document. Appendix A.3 asked for such a resolution. The major points of the proposal are: 1. There is a world-readable, superuser-modifiable file named "/etc/TIMEZONE" that describes the per-system timezone information and Daylight Saving Time rules. 2. TIMEZONE contains the following lines in Bourne shell syntax: TZ=ABC DST="dst1 dst2" export TZ DST 3. The TZ variable has 2 required parts (and an optional 3rd): A = standard abbreviation for the timezone as used by the local area A :== [A-Z][A-Z]* B = plus or minus difference in minutes from Universal Time, plus for those locations east of GMT, minus for west B :== [+-][0-9][0-9][0-9] C = standard abbreviation for the timezone as used by the local area when Daylight Saving Time is in effect. This part of TZ may be absent if DST is not used. C :== [A-Z][A-Z]* Example for my location in Boulder, Colorado, USA: TZ=MST-420MDT 4. The DST variable has 0 or 2 parts in the string. It has zero if no Daylight Saving Time is observed or 2, when DST starts and ends, for those places that do observe it. I have been unable to locate any place in the world that has 1, 3, or more changes per year to its local time. If DST is not null, the string means: dst1 = a string that describes when DST starts dst2 = a string that describes when DST stops Both have the syntax of "mmddDhhMM%CCcc". Translating it: mm = the month (January = 01) dd = the day of the month (01 to 31) D = the "search-forward" function number (0-7) usually 1 or 0 0 = use the day mm/dd without translation 1 = search forward to the first Sunday 2 = " Monday 3 = " Tuesday 4 = " Wednesday 5 = " Thursday 6 = " Friday 7 = " Saturday hh = the hour at which the change goes into effect (00-23) usually 01, 02 or 03 MM = the minute at which the change goes into effect (00-59) usually 00 % = a '+' or a '-' saying what direction to move CC = how many hours to move (00-23) usually 01 or 02 cc = how many minutes to move (00-23) usually 00 Example for my location in Boulder, Colorado, USA in 1986: DST="042410200+0100 102510200-0100" Alternately, if I already know the exact dates that DST starts and ends for that year, I can use: DST="042700200+0100 102600200-0100" 5. If the file is unreadable or missing, the default time zone to use is GMT and the default DST is null. 6. The library call "localtime()" is the only system code that need interpret the TZ and DST variables. 7. TZ and DST are put into the environment of each user when the user logs in. A user can change create their own TZ and DST values and replace the system maintained values in their environment. 8. Those utilities that strip off environment information can obtain TZ and DST values by reading "/etc/TIMEZONE". Bob Devine (303) 530-6635 Burroughs Distributed Systems Group 6655 Lookout Road Boulder, CO. 80301 UUCP: ihnp4!seismo!hao!asgb!devine OR sdcrdcf!bmcg!asgb!devine Volume-Number: Volume 5, Number 47