I wanted to get the same, but did not find anything on the Internet. I already used FlexDateUtils ( blog post ), but it only formats timezones as "GMT -600". Fortunately, I can confidently say that the users of my application will be in the United States, so I changed to "DateUtils.buildTimeZoneDesignation (date: Date)" as follows. Hope this helps.
private static function buildTimeZoneDesignation( date:Date ):String {
if ( !date ) {
return "";
}
var timezoneOffsetHours:Number = date.getTimezoneOffset() / 60;
if (3 < timezoneOffsetHours && timezoneOffsetHours < 12)
{
var usDST:Boolean = false;
var sundayBeforeToday:Number = date.date - date.day;
if (2007 <= date.fullYear) {
if (2 < date.month && date.month < 10) {
usDST = true;
}
else if (date.month == 2) {
usDST = (7 < sundayBeforeToday);
}
else if (date.month == 10) {
usDST = (0 < sundayBeforeToday);
}
}
else {
if (3 < date.month && date.month < 9) {
usDST = true;
}
else if (date.month == 3) {
usDST = (0 < sundayBeforeToday);
}
else if (date.month == 9) {
usDST = (sundayBeforeToday + 7 <= 31);
}
}
switch (timezoneOffsetHours) {
case 4:
return usDST ? "EDT" : "AST";
case 5:
return usDST ? "CDT" : "EST";
case 6:
return usDST ? "MDT" : "CST";
case 7:
return usDST ? "PDT" : "MST";
case 8:
return usDST ? "AKDT" : "PST";
case 9:
return usDST ? "HADT" : "AKST";
case 10:
return usDST ? "SDT" : "HAST";
case 11:
if (!usDST)
return "SST";
break;
}
}
var timeZoneAsString:String = "GMT ";
if ( 0 < timezoneOffsetHours && timezoneOffsetHours < 10 ) {
timeZoneAsString += "-0" + ( timezoneOffsetHours ).toString();
} else if ( date.getTimezoneOffset() < 0 && timezoneOffsetHours > -10 ) {
timeZoneAsString += "0" + ( -1 * timezoneOffsetHours ).toString();
}
timeZoneAsString += "00";
return timeZoneAsString;
}
source
share