I took that data from various sources. I'm using that for my own clock
too, and also have a function that, taking a "position" (first, second,
third, etc), a month and "day" can calculate the real date when a DST
occurs (for example, you feed "first Friday of may" or "last Monday of
December" and it returns the correct date for a specific year).
I have a list of DST/Timezones per location, but did not converted to AS
(I have some XML files). The problem is that the list is a big one,
because the list is compromised of:
a) Countries
b) Regions
c) States
d) Cities.
Usually, you can trim down the list a lot, since almost all cities in a
country have the same TZ/DST, but that's not the case for the US. In fact,
you have some cities on the same state that have different TZ.
You can get the complete list from:
http://www.isi.edu/~pan/SWBP/time-zone-note/time-zone-note.html
The problem with that list is that the dates specified for the start/end
of DST is that are tied to a specific year and usually you need to wait
until someone updates that list... so I coded the following list that has
all the info necessary to do the calcs:
private static const dstPolicies:Object = {
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
*/
private static function calcStartEnd(y:int, m:int, n:int,
w:int):int{
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:int = 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.
*/
private static function getDayOfWeek(y:int, m:int, d:int):int{
var a:int = int((14 - m) / 12);
y -= a;
m += 12 * a - 2;
var r:int = (d + y + int(y/4) - int(y/100) + int(y/400)
+ int((31*m)/12))%7;
if (r < 0) {
return 7+r;
} else {
return r;
}
}
Hope it helps...
On Thu, 06 Sep 2007 13:03:13 -0300, Keith Reinfeld
<[EMAIL PROTECTED]> wrote:
Hi Corban,
Yes, I've been working on mine. I really want to thank Marcelo for the
timezones array. Very helpful! Where did that come from?
I have worked out a mechanism for applying Daylight Savings Time rules.
Now
all I need is the data, by location, to pass in.
Note to Jim Berkey: First, thank you for the link. Nice touch with the
iconic location graphics. Second, I'm getting a 404 for the worldclock
source file. Just FYI.
Regards,
-Keith
http://keithreinfeld.home.comcast.net
_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com
--
Marcelo Volmaro
_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com