2017-01-03 5 views
3

これは、setMonth()メソッドでのみ発生し、他の方法では発生しません。set*()ここでDate.prototype.setMonth()は、タイムゾーンオフセットを変更しますか?

は、私が何を意味するかの例です:

var date = new Date(); 
date.getTimezoneOffset(); // -60 

date.setMonth(5); 
date.getTimezoneOffset(); // -120 

は、この予想される動作ですか? There's nothing mentioned about this on MDN.

EDIT:

うわー、私は馬鹿です。

+2

あなたは夏時間の境界を横断することができます。 – RobG

+0

生のJavascriptの日付コードを使用することは災害のためのレシピです。 Moment.jsは業界標準ですが、他にも優れた日付ライブラリがあります。数多くの問題があるので、基本的なJSの日付を使用しようとするのではなく、Momentや別のライブラリを使用する方がはるかに優れています。 – machineghost

+0

@ machineghost - これは実体化できない非常に暗い視点です。 Moment.jsはこの問題でOPを助けません。 – RobG

答えて

5

getTimezoneOffset methodはDST中に異なる値を返し、5DSTは今とは異なります。

返されるタイムゾーンオフセットは、呼び出された日付に適用されます。ホストシステムがサマータイム用に設定されている場合、オフセットはDateが表す日時に応じて変化し、夏時間適用が適用されます。

ところで

var date = new Date(); 
 
console.log(date.getTimezoneOffset()); 
 

 
date.setMonth(0); 
 
console.log(date.getTimezoneOffset()); 
 

 
date.setMonth(5); 
 
console.log(date.getTimezoneOffset());

、あなたは6月中にこのコードを実行する場合 - あなたは違いがないことがわかります:)

+1

また、ホストがサマータインを監視するように設定されていない場合でも、現在のところ違いはありません。 ;-) – RobG

関連する問題