thats great! Marcelo! sorry about the code confusion. :)  do you have
any examples of how you are implementing this? I think i have put my
clocks together ok... i'd kinda like to see how you are using it. do
you mind?

On Wed, Mar 26, 2008 at 6:08 PM, Marcelo Volmaro <[EMAIL PROTECTED]> wrote:
> I did that code :)
>
>  You have problems because the US changed the DST policy. Now it starts at
>  SECOND SUNDAY of MARCH
>   and ends at FIRST SUNDAY of NOVEMBER.
>
>  So, USADLS now should be (2, 0, 3, 1, 0, 11);
>
>  I don't know if the other policies changed too.
>
>  This is the latest table:
>  OLD_USADST: new Dst(LAST, SUNDAY, OCTOBER, FIRST, SUNDAY, APRIL),
>  NEW_USADST: new Dst(FIRST, SUNDAY, NOVEMBER, SECOND, SUNDAY, MARCH),
>  EU_DST: new Dst(LAST, SUNDAY, OCTOBER, LAST, SUNDAY, MARCH),
>  CH_DST: new Dst(SECOND, SATURDAY, MARCH, SECOND, SATURDAY, OCTOBER),
>  OCBR_DST: new Dst(SECOND, SUNDAY, FEBRUARY, FIRST, SUNDAY, NOVEMBER),
>  NCBR_DST: new Dst(LAST, SUNDAY, FEBRUARY, FIRST, SUNDAY, NOVEMBER),
>  MV_DST: new Dst(SECOND, SUNDAY, MARCH, FIRST, SUNDAY, OCTOBER),
>  MA_DST: new Dst(LAST, SUNDAY, SEPTEMBER, LAST, SUNDAY, MARCH),
>  JD_DST: new Dst(LAST, FRIDAY, SEPTEMBER, LAST, THURSDAY, MARCH),
>  ME_DST: new Dst(LAST, SATURDAY, OCTOBER, LAST, SUNDAY, MARCH),
>  EG_DST: new Dst(LAST, THURSDAY, SEPTEMBER, LAST, THURSDAY, APRIL),
>  IS_DST: new Dst(THIRD, SUNDAY, SEPTEMBER, LAST, FRIDAY, MARCH),
>  NA_DST: new Dst(FIRST, SUNDAY, SEPTEMBER, FIRST, SUNDAY, APRIL),
>  AR_DST: new Dst(FIRST, SUNDAY, OCTOBER, FIRST, SUNDAY, APRIL),
>  IR_DST: new Dst(FOURTH, TUESDAY, SEPTEMBER, FIRST, SUNDAY, MARCH),
>  AU_DST: new Dst(LAST, SUNDAY, MARCH, LAST, SUNDAY, OCTOBER),
>  TA_DST: new Dst(LAST, SUNDAY, MARCH, FIRST, SUNDAY, OCTOBER),
>  NZ_DST: new Dst(THIRD, SUNDAY, MARCH, FIRST, SUNDAY, OCTOBER)
>
>  There are a couple of countries that do not have a "programatic" DST but
>  moves from year to year.
>
>  Below is the XML I use to get the information I need:
>
>  Attributes:
>  n = name of the timezone
>  b = time offset (in minutes)
>  d = same, but in daylight
>
>  f and l = used to identify first and last nodes. Any year before f will
>  use the information in f for the calcs, any year after l will use the
>  information in l.
>
>  dst = the dst information from above.
>  shh, ehh: Start hour and End hour where the change occurs (so, it is not
>  always at 00:00).
>
>  If a year does not has a DST information, it must has the information
>  regarding the start and end date (sd = start day, sm = start month, ed =
>  end day, em = end month). If no information is provided (nor DST nor
>  Start/End dates), there are no DST for that specific year.
>
>  Also, remember that countries/timezones that have DST may or may not apply
>  the policy (example: Check GreenLand in the TimeZone control pannel in
>  Windows, you have an option to adjust for DST or not).
>
>  Hope this helps....
>
>  <tzinfo>
>         <tz n="(GMT-12:00) International Date Line West" b="720"/>
>         <tz n="(GMT-11:00) Midway Island, Samoa" b="660"/>
>         <tz n="(GMT-10:00) Hawaii" b="600"/>
>         <tz n="(GMT-09:00) Alaska" b="540" d="480">
>                 <y f="2006" dst="OLD_USADST" shh="2" ehh="2"/>
>                 <y l="2007" dst="NEW_USADST" shh="2" ehh="2"/>
>         </tz>
>         <tz n="(GMT-08:00) Pacific Time (US &amp; Canada)" b="480" d="420">
>                 <y f="2006" dst="OLD_USADST" shh="2" ehh="2"/>
>                 <y l="2007" dst="NEW_USADST" shh="2" ehh="2"/>
>         </tz>
>         <tz n="(GMT-08:00) Tijuana, Baja California" b="480" d="420">
>                 <y dst="OLD_USADST" shh="2" ehh="2"/>
>         </tz>
>         <tz n="(GMT-07:00) Arizona" b="420"/>
>         <tz n="(GMT-07:00) Chihuahua, La Paz, Mazatlan" b="420" d="360">
>                 <y dst="OLD_USADST" shh="2" ehh="2"/>
>         </tz>
>         <tz n="(GMT-07:00) Mountain Time (US &amp; Canada)" b="420" d="360">
>                 <y f="2006" dst="OLD_USADST" shh="2" ehh="2"/>
>                 <y l="2007" dst="NEW_USADST" shh="2" ehh="2"/>
>         </tz>
>         <tz n="(GMT-06:00) Central America" b="360"/>
>         <tz n="(GMT-06:00) Central Time (US &amp; Canada)" b="360" d="300">
>                 <y f="2006" dst="OLD_USADST" shh="2" ehh="2"/>
>                 <y l="2007" dst="NEW_USADST" shh="2" ehh="2"/>
>         </tz>
>         <tz n="(GMT-06:00) Guadalajara, Mexico City, Monterrey" b="360" 
> d="300">
>                 <y dst="OLD_USADST" shh="2" ehh="2"/>
>         </tz>
>         <tz n="(GMT-06:00) Saskatchewan" b="360"/>
>         <tz n="(GMT-05:00) Bogota, Lima, Quito, Rio Branco" b="300"/>
>         <tz n="(GMT-05:00) Eastern Time (US &amp; Canada)" b="300" d="240">
>                 <y f="2006" dst="OLD_USADST" shh="2" ehh="2"/>
>                 <y l="2007" dst="NEW_USADST" shh="2" ehh="2"/>
>         </tz>
>         <tz n="(GMT-05:00) Indiana (East)" b="300"/>
>         <tz n="(GMT-04:00) Atlantic Time (Canada)" b="240" d="180">
>                 <y f="2006" dst="OLD_USADST" shh="2" ehh="2"/>
>                 <y l="2007" dst="NEW_USADST" shh="2" ehh="2"/>
>         </tz>
>         <tz n="(GMT-04:00) Caracas, La Paz" b="240"/>
>         <tz n="(GMT-04:00) Manaus" b="240" d="180">
>                 <y f="2006" dst="OCBR_DST" shh="2"/>
>                 <y l="2007" dst="NCBR_DST"/>
>         </tz>
>         <tz n="(GMT-04:00) Santiago" b="240" d="180">
>                 <y dst="CH_DST" shh="23" smm="59" sss="59" ehh="23" emm="59" 
> ess="59"/>
>         </tz>
>         <tz n="(GMT-03:30) Newfoundland" b="210" d="150">
>                 <y f="2006" dst="OLD_USADST" smm="1" emm="1"/>
>                 <y l="2007" dst="NEW_USADST" smm="1" emm="1"/>
>         </tz>
>         <tz n="(GMT-03:00) Brasilia" b="180" d="120">
>                 <y f="2006" dst="OCBR_DST" shh="2"/>
>                 <y l="2007" dst="NCBR_DST"/>
>         </tz>
>         <tz n="(GMT-03:00) Buenos Aires, Georgetown" b="180"/>
>         <tz n="(GMT-03:00) Greenland" b="180" d="120">
>                 <y dst="OLD_USADST" shh="2" ehh="2"/>
>         </tz>
>         <tz n="(GMT-03:00) Montevideo" b="180" d="120">
>                 <y dst="MV_DST" shh="2" ehh="2"/>
>         </tz>
>         <tz n="(GMT-02:00) Mid-Atlantic" b="120" d="60">
>                 <y dst="MA_DST" shh="2" ehh="2"/>
>         </tz>
>         <tz n="(GMT-01:00) Azores" b="60" d="0">
>                 <y dst="EU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT-01:00) Cape Verde Is." b="60"/>
>         <tz n="(GMT) Casablanca, Monrovia, Reykjavik" b="0"/>
>         <tz n="(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London"
>  b="0" d="-60">
>                 <y dst="EU_DST" shh="2" ehh="1"/>
>         </tz>
>         <tz n="(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna"
>  b="-60" d="-120">
>                 <y dst="EU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague"
>  b="-60" d="-120">
>                 <y dst="EU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+01:00) Brussels, Copenhagen, Madrid, Paris" b="-60" 
> d="-120">
>                 <y dst="EU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb" b="-60" d="-120">
>                 <y dst="EU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+01:00) West Central Africa" b="-60"/>
>         <tz n="(GMT+02:00) Amman" b="-120" d="-180">
>                 <y dst="JD_DST" shh="1"/>
>         </tz>
>         <tz n="(GMT+02:00) Athens, Bucharest, Istanbul" b="-120" d="-180">
>                 <y dst="EU_DST" shh="4" ehh="3"/>
>         </tz>
>         <tz n="(GMT+02:00) Beirut" b="-120" d="-180">
>                 <y dst="ME_DST" shh="23" smm="59" sss="59"/>
>         </tz>
>         <tz n="(GMT+02:00) Cairo" b="-120" d="-180">
>                 <y dst="EG_DST" shh="23" smm="59" sss="59" ehh="23" emm="59" 
> ess="59"/>
>         </tz>
>         <tz n="(GMT+02:00) Harare, Pretoria" b="-120"/>
>         <tz n="(GMT+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius"
>  b="-120" d="-180">
>                 <y dst="EU_DST" shh="4" ehh="3"/>
>         </tz>
>         <tz n="(GMT+02:00) Jerusalem" b="-120" d="-180">
>                 <y f="2003" dst="IS_DST" shh="2" ehh="2"/>
>                 <y n="2004"/>
>                 <y n="2005" sd="9" sm="9" ed="1" em="3" shh="2" ehh="2"/>
>                 <y n="2006" sd="1" sm="9" ed="31" em="2" shh="2" ehh="2"/>
>                 <y n="2007" sd="16" sm="8" ed="30" em="2" shh="2" ehh="2"/>
>                 <y n="2008" sd="5" sm="9" ed="28" em="2" shh="2" ehh="2"/>
>                 <y n="2009" sd="27" sm="8" ed="27" em="2" shh="2" ehh="2"/>
>                 <y n="2010" sd="12" sm="8" ed="26" em="2" shh="2" ehh="2"/>
>                 <y n="2011" sd="2" sm="9" ed="1" em="3" shh="2" ehh="2"/>
>                 <y n="2012" sd="23" sm="8" ed="30" em="2" shh="2" ehh="2"/>
>                 <y n="2013" sd="8" sm="8" ed="29" em="2" shh="2" ehh="2"/>
>                 <y n="2014" sd="28" sm="8" ed="28" em="2" shh="2" ehh="2"/>
>                 <y n="2015" sd="20" sm="8" ed="27" em="2" shh="2" ehh="2"/>
>                 <y n="2016" sd="9" sm="9" ed="1" em="3" shh="2" ehh="2"/>
>                 <y n="2017" sd="24" sm="8" ed="31" em="2" shh="2" ehh="2"/>
>                 <y n="2018" sd="16" sm="8" ed="30" em="2" shh="2" ehh="2"/>
>                 <y n="2019" sd="6" sm="9" ed="29" em="2" shh="2" ehh="2"/>
>                 <y n="2020" sd="27" sm="8" ed="27" em="2" shh="2" ehh="2"/>
>                 <y n="2021" sd="12" sm="8" ed="26" em="2" shh="2" ehh="2"/>
>                 <y l="2022" sd="2" sm="9" ed="1" em="3" shh="2" ehh="2"/>
>         </tz>
>         <tz n="(GMT+02:00) Minsk" b="-120" d="-180">
>                 <y dst="EU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+02:00) Windhoek" b="-120" d="-60">
>                 <y dst="NA_DST" shh="2" ehh="2"/>
>         </tz>
>         <tz n="(GMT+03:00) Baghdad" b="-180" d="-240">
>                 <y dst="AR_DST" shh="4" ehh="3"/>
>         </tz>
>         <tz n="(GMT+03:00) Kuwait, Riyadh" b="-180"/>
>         <tz n="(GMT+03:00) Moscow, St. Petersburg, Volgograd" b="-180" 
> d="-240">
>                 <y dst="EU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+03:00) Nairobi" b="-180"/>
>         <tz n="(GMT+03:00) Tbilisi" b="-180"/>
>         <tz n="(GMT+03:30) Tehran" b="-210" d="-270">
>                 <y n="2005" dst="IR_DST" shh="2" ehh="2"/>
>         </tz>
>         <tz n="(GMT+04:00) Abu Dhabi, Muscat" b="-240"/>
>         <tz n="(GMT+04:00) Baku" b="-240" d="-300">
>                 <y dst="EU_DST" shh="5" ehh="4"/>
>         </tz>
>         <tz n="(GMT+04:00) Yerevan" b="-240" d="-300">
>                 <y dst="EU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+04:30) Kabul" b="-270"/>
>         <tz n="(GMT+05:00) Ekaterinburg" b="-300" d="-360">
>                 <y dst="EU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+05:00) Islamabad, Karachi, Tashkent" b="-300"/>
>         <tz n="(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi" b="-330"/>
>         <tz n="(GMT+05:30) Sri Jayawardenepura" b="-330"/>
>         <tz n="(GMT+05:45) Kathmandu" b="-345"/>
>         <tz n="(GMT+06:00) Almaty, Novosibirsk" b="-360" d="-420">
>                 <y dst="EU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+06:00) Astana, Dhaka" b="-360"/>
>         <tz n="(GMT+06:30) Yangon (Rangoon)" b="-390"/>
>         <tz n="(GMT+07:00) Bangkok, Hanoi, Jakarta" b="-420"/>
>         <tz n="(GMT+07:00) Krasnoyarsk" b="-420" d="-480">
>                 <y dst="EU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi" b="-480"/>
>         <tz n="(GMT+08:00) Irkutsk, Ulaan Bataar" b="-480" d="-540">
>                 <y dst="EU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+08:00) Kuala Lumpur, Singapore" b="-480"/>
>         <tz n="(GMT+08:00) Perth" b="-480" d="-540">
>                 <y f="2004" dst="AU_DST" shh="3" ehh="2"/>
>                 <y n="2005"/>
>                 <y n="2006" sd="1" sm="0" ed="1" em="11" ehh="2"/>
>                 <y l="2007" dst="AU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+08:00) Taipei" b="-480"/>
>         <tz n="(GMT+09:00) Osaka, Sapporo, Tokyo" b="-540"/>
>         <tz n="(GMT+09:00) Seoul" b="-540"/>
>         <tz n="(GMT+09:00) Yakutsk" b="-540" d="-600">
>                 <y dst="EU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+09:30) Adelaide" b="-570" d="-630">
>                 <y dst="AU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+09:30) Darwin" b="-570"/>
>         <tz n="(GMT+10:00) Brisbane" b="-600"/>
>         <tz n="(GMT+10:00) Canberra, Melbourne, Sydney" b="-600" d="-660">
>                 <y dst="AU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+10:00) Guam, Port Moresby" b="-600"/>
>         <tz n="(GMT+10:00) Hobart" b="-600" d="-660">
>                 <y dst="TA_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+10:00) Vladivostok" b="-600" d="-660">
>                 <y dst="EU_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+11:00) Magadan, Solomon Is., New Caledonia" b="-660"/>
>         <tz n="(GMT+12:00) Auckland, Wellington" b="-720" d="-780">
>                 <y dst="NZ_DST" shh="3" ehh="2"/>
>         </tz>
>         <tz n="(GMT+12:00) Fiji, Kamchatka, Marshall Is." b="-720"/>
>         <tz n="(GMT+13:00) Nuku'alofa" b="-780"/>
>  </tzinfo>
>
>
>  On Wed, 26 Mar 2008 19:25:47 -0300, Corban Baxter <[EMAIL PROTECTED]>
>  wrote:
>
>
>
>  > Hey all,
>  > because of the daylight savings time going on across the world I was
>  > having trouble with the world clocks I setup for a client. I tried to
>  > implement the code below but was un succesful to do it correctly
>  > apparently. Does anyone have any working examples of this. And if so
>  > do you mind sharing? Thanks ALL!!
>  >
>  >
>  >
>  > Code via: Keith Reinsfield (I think* sorry...)
>  > dstPolicies = {
>  >                        USADLS:new DstPolicy(1,0,4, -1,0,10),
>  >                        EUDLS:new DstPolicy(-1,0,3, -1,0,10),
>  >                        AU2003DLS:new DstPolicy(-1,0,10, -1,0,3),
>  >                        AUTDLS:new DstPolicy(1,1,10, -1,0,3),
>  >                        RUDLS:new DstPolicy(-1,0,3, -1,0,10),
>  >                        EGDLS:new DstPolicy(-1,5,4, -1,4,9),
>  >                        IRDLS:new DstPolicy(-1,6,3, -1,1,9),
>  >                        IQDLS:new DstPolicy(255, 1,4, 255, 1,10),
>  >                        ILDLS:new DstPolicy(-1,4,3, 1,4,10),
>  >                        JODLS:new DstPolicy(-1,3,3, -1,4,10),
>  >                        NADLS:new DstPolicy(1,0,9, 1,0,4),
>  >                        PKDLS:new DstPolicy(1,6,4, 1,6,10),
>  >                        SYDLS:new DstPolicy(255,30,3, 255,21,9),
>  >                        CLDLS:new DstPolicy(2,0,10, 2,0,3),
>  >                        CLEDLS:new DstPolicy(2,5,10, 2,6,3),
>  >                        NZDLS:new DstPolicy(1,0,10, 3,0,3),
>  >                        PYDLS:new DstPolicy(1,0,9, 1,0,4),
>  >                        FKDLS:new DstPolicy(1,0,9, -1,0,4)
>  >                };
>  >
>  > /*Where the first number is the position (1: first, -1:last, 255:
>  > straight
>  > date), the second and the third are the day/month.
>  > If the position is 255, the date is a straight day/month date, so for
>  > example for IRAQ the start date is April 1.
>  >
>  > The formulas for the calcs are:*/
>  >
>  > /**
>  >                 * @param y:int Year
>  >                 * @param m:int Month (0 - 11)
>  >                 * @param n:int Day of the week (0 for a Sunday, 1 for
>  > a Monday, 2 for a
>  > Tuesday, etc)
>  >                 * @param w:int Occurence (1:first, 2:second, 3:third,
>  > 4:fourth, -1:last)
>  >                 * @return real day of the month where the DST starts/ends
>  >                 *
>  >                 * first friday = w:1, n:5
>  >                 * third monday = w:3, n:1
>  >                 * last monday = w:-1, n:1
>  >                 */
>  >
>  > function calcStartEnd(y:Number, m:Number, n:Number, w:Number):Number {
>  >       if (w<0) {
>  >               var nd:Number = (new Date(y, m, 0)).getDate();
>  >               var diff:Number = (getDayOfWeek(y, m+1, nd)-n)%7;
>  >               if (diff<0) {
>  >                       diff += 7;
>  >               }
>  >               return nd-diff;
>  >       }
>  >
>  >       var nq:Number = 7*w-6+(n-getDayOfWeek(y, m+1, 1))%7;
>  >       if (nq<1) {
>  >               nq += 7;
>  >       }
>  >
>  >       return nq;
>  > }
>  >
>  > /**
>  >                 * @param y:int Year
>  >                 * @param m:int Month (1 - 12)
>  >                 * @param d:int Day (1 - 31)
>  >                 * @return 0 for a Sunday, 1 for a Monday, 2 for a
>  > Tuesday, etc.
>  >                 */
>  >
>  > function getDayOfWeek(y:Number, m:Number, d:Number):Number {
>  >       var a:Number = Number((14-m)/12);
>  >       y -= a;
>  >       m += 12*a-2;
>  >       var r:Number =
>  > (d+y+Number(y/4)-Number(y/100)+Number(y/400)+int((31*m)/12))%7;
>  >       if (r<0) {
>  >               return 7+r;
>  >
>  >       } else {
>  >               return r;
>  >       }
>  > }
>  >
>
>
>
>  --
>  Marcelo Volmaro
>
>  _______________________________________________
>  Flashcoders mailing list
>  [email protected]
>  http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>



-- 
Corban Baxter
http://www.projectx4.com
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to