I can't send code if that's what you need (because it belongs to a client app) but on each clock (that are a kind of widget you can place into a dashboard) you can select the timezone you want to display in that clock.

The time is simply calculated by performing some math on the Date object:

var d:Date = new Date();
var ct:Number = Number(d)+(d.getTimezoneOffset() * 60000); // this makes the time be at GMT+0 d.setTime(ct + (selectedTimeZoneOffset * 60000)); //this makes the time be at the selected Timezone

Where the "selectedTimeZoneOffset" variable holds the information of the "b" attribute. Then, I use that date to check if I'm in DST I re-do the calc, but using the "d" attribute.

Regards,

On Thu, 27 Mar 2008 11:05:44 -0300, Corban Baxter <[EMAIL PROTECTED]> wrote:

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







--
Marcelo Volmaro

_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to