2009-10-20 5 views
6

タイムリーな質問があります。時間変更のため、北米*内のルールは以下のとおりです。JavaScript - 次回の変更日(標準または夏時間)

  • 最初の日曜日11月で、3月スタンダード(-1時間)
  • 第2日曜日に変更をオフセット(夏時間への変更を相殺

JavaScriptでDateパラメータを使用し、引数がStandardかDaylight Savingかを判断する関数を考えてみましょう。

問題の根は次のとおりです。

  • どのように次の時間変化の日付を構築するのでしょうか?

アルゴリズム/擬似コードは、現在、次のようになります。

 
if argDate == "March" 
{ 

    var firstOfMonth = new Date(); 
    firstOfMonth.setFullYear(year,3,1); 

    //the day of week (0=Sunday, 6 = Saturday) 
    var firstOfMonthDayOfWeek = firstOfMonth.getDay(); 

    var firstSunday; 

    if (firstOfMonthDayOfWeek != 0) //Sunday! 
    { 
     //need to find a way to determine which date is the second Sunday 
    } 

} 

ここ制約は標準のJavaScript機能を使用して、Dateオブジェクトの任意のJavaScriptエンジンの解析をこすっていないことです。このコードはブラウザでは実行されないため、これらの優れたソリューションは適用されません。

**いないすべての北米での場所/地域の変更時間。*

答えて

1
if argDate == "March" 
{ 

    var firstOfMonth = new Date(); 
    firstOfMonth.setFullYear(year,3,1); 

    //the day of week (0=Sunday, 6 = Saturday) 
    var firstOfMonthDayOfWeek = firstOfMonth.getDay(); 

    var daysUntilFirstSunday = (7-firstOfMonthDayOfWeek) % 7; 

    var firstSunday = firstOfMonth.getDate() + daysUntilFirstSunday; 

    // first Sunday now holds the desired day of the month 
} 
0

1)私は別の国の他のいくつかのルールがあるかもしれません期待しています。一部には、夏時間がありません。特定のロケールで答えを見つけるには、getTimetoneOffset()が値を変更する日を見つけるために365(6)日間ループする可能性があります。これはパフォーマンスの大きな遅れであってはなりません。

2)次に、時間が変更された特定の時刻を取得できます(米国の場合は午前2時です)。別のループを24時間お勧めします


PS:Ok、someone has already done the job =)。

PPS:最初の質問はでした。「日光は特定の日付に適用されているかどうかですか?」This answer solves the task

関連する問題