2011-03-04 54 views

回答

1

您可以使用Date對象的timeZoneOffest嗎?

老實說,我相信這只是回傳基於用戶的操作系統設置的信息。我不希望bBrowser真的有時區。

+0

是的我可以使用timeZoneOffset。但是我正在尋找一些功能/庫,可以顯示格林威治標準時間5作爲EST等 – Satish 2011-03-04 02:12:39

+1

@Satish所以你正在尋找一種方式來格式化數據?從原來的問題來看,這並不明顯。 – JeffryHouser 2011-03-04 18:45:18

+0

是的格式化日期以顯示其中的時區信息。我正在尋找AS3圖書館,在那裏我可以呈現格林威治標準時間5作爲東部時間等等 – Satish 2011-03-06 16:09:02

1

我一直想要同樣的事情,但我在互聯網上找不到任何東西。我已經使用FlexDateUtilsblog post),但它只將時區格式設置爲'GMT -600'。幸運的是,我可以放心地說,我的應用程序的用戶將在美國,所以我修改爲'DateUtils.buildTimeZoneDesignation(date:Date)',如下所示。我希望這有幫助。

private static function buildTimeZoneDesignation(date:Date):String { 
     if (!date) { 
      return ""; 
     } 
     var timezoneOffsetHours:Number = date.getTimezoneOffset()/60; 

     // custom timezone handlers (assumes major U.S. zones with daylight savings time dates as of 2011) 
     if (3 < timezoneOffsetHours && timezoneOffsetHours < 12) 
     { 
      var usDST:Boolean = false; 
      // the date of the Sunday before today unless today is Sunday 
      var sundayBeforeToday:Number = date.date - date.day; 
      if (2007 <= date.fullYear) { 
       // test for since-2007 extended daylight savings time 
       if (2 < date.month && date.month < 10) { 
        // daylight savings time (April through October) 
        usDST = true; 
       } 
       else if (date.month == 2) { 
        // DST starts second Sunday in March 
        usDST = (7 < sundayBeforeToday); 
       } 
       else if (date.month == 10) { 
        // DST ends first Sunday in November 
        usDST = (0 < sundayBeforeToday); 
       } 
      } 
      else { 
       // test for pre-2007 daylight savings time 
       if (3 < date.month && date.month < 9) { 
        // daylight savings time (May through September) 
        usDST = true; 
       } 
       else if (date.month == 3) { 
        // DST starts first Sunday in April 
        usDST = (0 < sundayBeforeToday); 
       } 
       else if (date.month == 9) { 
        // DST ends last Sunday in October 
        usDST = (sundayBeforeToday + 7 <= 31); 
       } 
      } 
      // return custom timezone strings for US timezones 
      switch (timezoneOffsetHours) { 
       case 4: 
        // Eastern or Atlantic 
        return usDST ? "EDT" : "AST"; 
       case 5: 
        // Central or Eastern 
        return usDST ? "CDT" : "EST"; 
       case 6: 
        // Mountain or Central 
        return usDST ? "MDT" : "CST"; 
       case 7: 
        // Pacific or Mountain 
        return usDST ? "PDT" : "MST"; 
       case 8: 
        // Alaska or Pacific 
        return usDST ? "AKDT" : "PST"; 
       case 9: 
        // Hawaii or Alaska 
        return usDST ? "HADT" : "AKST"; 
       case 10: 
        // Samoa or Hawaii 
        return usDST ? "SDT" : "HAST"; 
       case 11: 
        if (!usDST) 
         // Samoa 
         return "SST"; 
        break; 
      } 
     } 

     // else just generate a GMT string 

     var timeZoneAsString:String = "GMT "; 
     // timezoneoffset is the number that needs to be added to the local time to get to GMT, so 
     // a positive number would actually be GMT -X hours 
     if (0 < timezoneOffsetHours && timezoneOffsetHours < 10) { 
      timeZoneAsString += "-0" + (timezoneOffsetHours).toString(); 
     } else if (date.getTimezoneOffset() < 0 && timezoneOffsetHours > -10) { 
      timeZoneAsString += "0" + (-1 * timezoneOffsetHours).toString(); 
     } 
     // add zeros to match standard format 
     timeZoneAsString += "00"; 

     return timeZoneAsString; 
    } 
相關問題