[windev] Calculating DST switch moments of many future years

Mark McGinty mmcginty at dbunwired.com
Thu Mar 26 12:43:57 GMT 2009


 

> -----Original Message-----
> From: windev-bounces at windev.org 
> [mailto:windev-bounces at windev.org] On Behalf Of Serge Wautier
> Sent: Thursday, March 26, 2009 4:55 AM
> To: windev at windev.org
> Subject: Re: [windev] Calculating DST switch moments of many 
> future years
> 
> > every year since the inception of DST, new years day has 
> fallen within 
> > DST, and the first day of June under standard time.
> 
> Even in the southern hemisphere?

I'm still just pretending to see Europe through my narrow little US-centric
point of view. :-)  Fortunately there are no markets south of the equator
that really interest me much -- which simplifies my life considerably.  :-)

To answer your question with a blind guess, probably not, given that their
seasons are upside down (too.)


-Mark


 
> Serge.
> http://www.apptranslator.com
> 
> 
> > -----Original Message-----
> > From: windev-bounces at windev.org 
> [mailto:windev-bounces at windev.org] On 
> > Behalf Of Mark McGinty
> > Sent: jeudi 26 mars 2009 12:43
> > To: 'Goran Pusic'; windev at windev.org
> > Subject: Re: [windev] Calculating DST switch moments of many future 
> > years
> > 
> > 
> > 
> > > -----Original Message-----
> > > From: windev-bounces at windev.org
> > > [mailto:windev-bounces at windev.org] On Behalf Of Goran Pusic
> > > Sent: Thursday, March 26, 2009 2:29 AM
> > > To: windev at windev.org
> > > Subject: [windev] Calculating DST switch moments of many future 
> > > years
> > >
> > >
> > > Hi all!
> > >
> > > I need to calculate UTC moment for DST switches for a given time 
> > > zone (perhaps different from system's time zone), for a couple of 
> > > decades in advance. (If it sounds like a WTF: this info 
> is sent to 
> > > an embedded system to help it know about it's timezone 
> bias at every 
> > > moment in time, for as long as it will live, so that it can 
> > > calculate local time).
> > 
> > Was the code written to apply the new DST rules for dates 
> in 2007 and 
> > later?
> > If not your couple decades worth of data generated in 
> advance contains 
> > flaws.
> > 
> > My approach to converting to UTC was this:
> > 
> > 1. Get tz bias for a given zone for 2 dates, each of which is 
> > definitively in std time, and DST, respectively.  01 Jan 
> and 01 June 
> > work nicely, for every year since the inception of DST, new 
> years day 
> > has fallen within DST, and the first day of June under 
> standard time.  
> > This gives you both standard bias and DST bias that are guaranteed 
> > correct for a given time zone.
> > 
> > 2. Then I determine whether the date in question fell within DST, 
> > using the rules that applied to the year in which the date 
> occurred, 
> > which in turn determines which of the two bias values [acquired in 
> > step 1] is the correct one to apply.
> > 
> > 
> > Start of DTC:
> > 
> >     USA:
> >         Year <= 2006:
> >             Month = 4
> >             Day = (2 + 6 * Year - (short)(Year / 4)) % 7 + 1
> > 
> >         2007 and after:
> >             Month = 3
> >             Day = 14 - ((short)(1 + Year * 5 / 4) % 7)
> > 
> >     Europe:
> >         Month = 3
> >         Day = (31 - ((short)(Year * 5 / 4) + 4) % 7)
> > 
> > 
> > End of DTC:
> > 
> >     USA:
> >         Year <= 2006:
> >             Month = 10
> >             Day = (31 - (short)(Year * 5 / 4) + 1) % 7)
> > 
> >         2007 and after:
> >             Month = 11
> >             Day = 7 - (short)(1 + Year * 5 / 4) % 7)
> > 
> >     Europe (same as USA prior to 2007):
> >         Month = 10
> >         Day = (31 - (short)(Year * 5 / 4) + 1) % 7)
> > 
> > 
> > In your case you could calc those 4 values once for each 
> year you were
> > going
> > to generate, and cache them in an array or something.
> > 
> > 
> > -MM
> > 
> > 
> > 
> > > For that, I have a calculation that relies on Windows
> > > TIME_ZONE_INFORMATION and friends. However, recently (after
> > > some 5-6 years after the code was written), people found out
> > > there are bugs inside my calculation :-( .
> > >
> > > Now... Before I delve into this again (it's not urgent, it's
> > > for next autumn ;-) ), do you guys have any pointers on how
> > > to do it? Did anyone do it before?
> > >
> > > HTH,
> > > Goran.
> > >
> > > P.S.
> > >
> > > Yes, I know that DST rules change, so calculation may be good
> > > now, but bad in the future. Nothing I can do about that, it's
> > > on shoulders of users.
> > >
> > > P.P.S Hi, Serge W! Remember this? (Bug is mine, though)
> > >
> > >
> > >
> > >
> > > --
> > > Windev mailing list at Windev at windev.org
> > >
> > > Lost your password?  Need to unsubscribe or change your
> > > delivery options?
> > > Go to http://lists.windev.org/mailman/listinfo/windev
> > > --
> > > Search the Windev Archives - www.windev.org
> > >
> > 
> > --
> > Windev mailing list at Windev at windev.org
> > 
> > Lost your password?  Need to unsubscribe or change your delivery
> > options?
> > Go to http://lists.windev.org/mailman/listinfo/windev
> > --
> > Search the Windev Archives - www.windev.org
> 
> -- 
> Windev mailing list at Windev at windev.org
> 
> Lost your password?  Need to unsubscribe or change your 
> delivery options?  
> Go to http://lists.windev.org/mailman/listinfo/windev
> --
> Search the Windev Archives - www.windev.org
> 



More information about the Windev mailing list