簡體   English   中英

如何使用Flex / AS3獲取瀏覽器時區?

[英]How do I get browser timezone using Flex/AS3?

如何在Flex / AS3中獲取客戶端瀏覽器的時區?

你能使用Date對象的timeZoneOffest嗎?

老實說,我相信這只會根據用戶的操作系統設置傳回信息。 我不希望bBrowser實際上有一個時區。

我一直想要同樣的東西,但我在網上找不到任何東西。 我已經在使用FlexDateUtils博客文章 ),但它只將時區格式化為'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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM