2011-12-06 2 views
5

この方法はline 1380 in the jQuery ui datepickerである:それは、DatePickerのコード内の多くの場所で使用されているjQueryのUI Datepickerにこれがなぜあるのか説明できますか?

_daylightSavingAdjust: function(date) { 
    if (!date) { 
     return null; 
    } 
    date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); 
    return date; 
} 

date = new Date(); 
console.log("" + date); 
date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); 
console.log("" + date); 

そして、私が得た:私の知る限り、このコードは、わずか数時間> 12を有する任意の日付に2時間を追加します見ることができるようにそれ以外の場合は0

に時間を設定し、私は私のコンソールでそれを試してみました:

Tue Dec 06 2011 18:36:06 GMT+0100 (CET) 
Tue Dec 06 2011 20:36:06 GMT+0100 (CET) 
+0

私はそれが言うことを推測しています、それが問題であるインスタンスの夏時間の時間を調整します。私が住んでいる場所では、夏時間はわずか1時間で、2時間ではありませんか? – adeneo

+0

質問に実際のコード行へのリンクが追加されました。そこにはコメントがありますが、問題を全体的にはっきりさせるものではありません。彼らはいくつかのコーナーケースでは、次の日に増加する日付をトリガーしようとしているように見えますが、私は本当にロジックに従っていない。あなたが気にしていることは、コードは明示的に '<= 12'の時に' 0'に時間を設定していることです。 –

+0

詳細を調べたところ、このメソッドは厳密に日付とともに使用されていました。たとえば、datepicker.parseDateメソッドでは、daylightSavingAdjustに新しい日付を渡した後、変更されたかどうかを確認するためにチェックされます。もしそうであれば、エラーが発生します。 – disc0dancer

答えて

5

コメントは確かに少し不可解です:

/* Handle switch to/from daylight saving. 
    Hours may be non-zero on daylight saving cut-over: 
    > 12 when midnight changeover, but then cannot generate 
    midnight datetime, so jump to 1AM, otherwise reset. 
    @param date (Date) the date to check 
    @return (Date) the corrected date */ 

日付ピッカーは、日付オブジェクトを作成し、時間を指定せずに選択した日付からternally - 深夜が使用されます。いくつかの地域では、DSTが深夜に始まり、前日の午後11時に戻されます。

この関数は、Dateオブジェクトの時刻を調べて、正しい時刻を取得するために2時間先に時間を進めなければならないかどうかを判断します。

関連する問題