Newsgroups: comp.sys.sgi.bugs Path: gmd.de!xlink.net!howland.reston.ans.net!pipex!uunet!munnari.oz.au! mel.dit.csiro.au!its.csiro.au!dmssyd.syd.dms.CSIRO.AU!metro!vislab.su.edu.au!ben From: b...@vislab.su.edu.au (Ben Simons) Subject: TZ TIMEZONE BUG for Southern Hemisphere Message-ID: <CGB0Du.Bs7@ucc.su.OZ.AU> Keywords: TZ TIMEZONE Sender: n...@ucc.su.OZ.AU Nntp-Posting-Host: lewis.vislab.su.edu.au Reply-To: b...@vislab.su.edu.au Organization: VisLab - Sydney University, Australia. Date: Thu, 11 Nov 1993 01:34:41 GMT Lines: 65 Hi all, I know that this is going to seem pretty boring to most of you, but I post this in case someone else finds it useful. There is a bug in the way that "date" determines whether we are in daylight-savings or not. In the southern hemisphere (eg: for this year) we go INTO daylight savings (DST) now, and come out of it next year (it's spring right now). The problem is that the test to see if today should be in DST if ( start_DST < today < end_DST ) assumes that start_DST < end_DST, which is not true for us. The fix is to swap the order of the timezones, so that in a sense we are always in daylight-savings, and then we go in and out of our standard time zone. FYI Here's a copy of VisLab's /etc/TIMEZONE (incl. below) ben. _______________________________________________________ Ben Simons Physics Building, A28, VisLab Systems Manager Sydney University. NSW. Phone +61-2-692-3005 AUSTRALIA. 2006. # # TIMEZONE file. (Distributed via "rdist" from stacey.vislab.su.edu.au) # # MUST BE UPDATED ANNUALLY. # # Note that this format for the setting of TZ does not # (and cannot) allow for Daylight-Savings adjustments # for NSW timezones. This is because SGI uses the JULIAN DATE # (ie: a day-number between 0 and 365) to determine when to adjust the time. # In NSW, we use the "first sunday in march" and the "last sunday in october", # which is a different Julian date each year... Therefore the time will have # to be manually moved forward and back for each daylight savings adjustment. # [ben]. # # Previous (wrong) settings of TZ have been: # TZ=EST-11 # TZ=EST10:00:00EDT11:00:00 # TZ=EST10EDT # # There is a bug in the way that "date" determines whether we are currently # in the daylight-savings timezone or not. I believe that the problem occurred # because it was written by someone in the northern hemisphere!! # In NSW we go INTO daylight-savings on the julian day (0-365) 304, and # come out on day 65 (the following year). Say that today is day 315, then # the test to see whether we should be in daylight savings is: # # if 304 < 315 < 65 # # which fails... tsk! So, I've swapped the two zones around as if we are # always in daylight savings, and then we go into standard time on day 65, # and leave standard time on day 304. This works. # Thus "EDT-11EST-10;65/2:00,304/2:00" means Eastern Daylight Time zone is # -11 hours from GMT, Eastern Standard Time is -10 from GMT, we go into EST # on julian day 65 at 2:00am, and we leave EST on julian day 304 at 2am. # [ben 11Nov93] # TZ="EDT-11EST-10;65/2:00,304/2:00"
Newsgroups: comp.sys.sgi.bugs Path: gmd.de!xlink.net!howland.reston.ans.net!agate!library.ucla.edu!harpo! ucla-cs!twinsun!eggert From: egg...@twinsun.com (Paul Eggert) Subject: Re: TZ TIMEZONE BUG for Southern Hemisphere Message-ID: <CGIyCz.DBJ@twinsun.com> Keywords: TZ TIMEZONE Sender: use...@twinsun.com Nntp-Posting-Host: tori Organization: Twin Sun Inc, El Segundo, CA, USA References: <CGB0Du.Bs7@ucc.su.OZ.AU> Date: Mon, 15 Nov 1993 08:31:45 GMT Lines: 5 One of these days SGI should switch to Arthur David Olson's public domain time zone code, which doesn't have that bug and is a lot easier to use. Instead of monstrosities like TZ="EDT-11EST-10;65/2:00,304/2:00", with Olson's code all you need to say in New South Wales is TZ="Australia/NSW". Sun's been doing it right for years -- perhaps that's why SGI's resisting (:-).