1

私は、組織内の全員の IE お気に入りリストにプッシュする作業スクリプトを持っています (以下を参照)。オフィスが会社内の地理的にどこにあるかに応じて、4 つの URL のうちの 1 つにルーティングされます。

<html>
<body>

<script language="JavaScript">
var today = new Date();
var offset = (today.getTimezoneOffset() / 60) + 1;
if (offset == 5) document.location.href = "url=EASTERNtime.com";
else if (offset == 6) document.location.href = "url=CENTRALtime.com";
else if (offset == 7) document.location.href = "url=MOUNTAINtime.com";
else if (offset == 8) document.location.href = "url=pacifictime.com";
else document.location.href = "url=pickyourowntimezone.com";

</script>
</body>
</html>

私が疑問に思っているのは、アリゾナにオフィスがあり、彼らがそれを認識していないことを知っているので、夏時間が私のスクリプトにどのように影響するかということです. 人々が正しくルーティングされるようにするには、スクリプトに何を変更する必要がありますか? みたいなことを考えていた..

日付が 3 月 11 日から 11 月 4 日までの場合は、これを実行します...そうでない場合は、これを実行します...

それは理にかなっていますか?それとも、これについて心配する必要さえありますか?彼らの時計が変わるかどうかにかかわらず、すべてがうまくいきますか?

4

2 に答える 2

1

My Date Extensions には、DST を識別するメソッドがあります。

http://depressedpress.com/javascript-extensions/dp_dateextensions/

dateinstance .isDST () メソッドは、日付がローカル DST 内にあると思われる場合は「true」を返し、そうでない場合は「false」を返します。

しかし、一般的なアイデアは非常に単純であり、気が狂うほど恐ろしいものです (それは本当にばかげた推測であるため)。基本的に、DST (または同様のスキーム) が使用され、開始日と終了日が定義されている場所では、1 月 1 日と 7 月 1 日の間のタイム ゾーン オフセットは同じではありません。南半球がすべての人を逆行して間違っているという事実を尊重するコードを追加します (私は冗談です!) 特定の日付 (および私の拡張機能で使用されるもの) を決定する単純な関数は次のとおりです。

        // isDST 
        // Returns "true" if the date appears to fall within the local area's Daylight Saving Time (or similar scheme), returns false if the date does not (or it appears that the region doesn't observe DST).
Date.prototype.isDST = function() { 

        // Generate test dates
    var Jan1 = new Date(this.getFullYear(), 0);
    var Jul1 = new Date(this.getFullYear(), 6);

        // DST in the Northern hemisphere is "fall back"
    if ( Jan1.getTimezoneOffset() > Jul1.getTimezoneOffset() && this.getTimezoneOffset() != Jan1.getTimezoneOffset() ){
        return true;
    };
        // DST in Southern hemisphere is "leap ahead"
    if ( Jan1.getTimezoneOffset() < Jul1.getTimezoneOffset() && this.getTimezoneOffset() != Jul1.getTimezoneOffset()){
        return true;
    };
        // We're not in DST 
    return false;
};

TZ データベースを使用するソリューションは、どのタイムゾーンが使用されているかを判断できるという点でより堅牢ですが、時間が DST に含まれているかどうかを判断する際には、多くの場合、同じように無謀です (開始時間と終了時間のルールはしばしば流動的であるという事実のため)。 )。

あなたの必要に応じて、上記のコードでうまくいくはずです。

于 2012-10-04T20:13:50.260 に答える
0

http://www.pageloom.com/automatic-timezone-detection-with-javascriptには、非常に堅牢なタイムゾーン検出スクリプトがあります。縮小されていないコードは、 https: //bitbucket.org/pellepim/jstimezonedetect/src/e265c8eddec7/detect_timezone.js で入手できます。

于 2012-10-04T19:10:35.873 に答える