2012-01-19 7 views
1

JavaScriptで日付計算を実行しようとしていますが、これはExcelに一致しています。Excelとjavascriptの日付の計算が異なる

//Excel 
=(EDATE(DATE(2000,6,1),60)-DATE(2012,1,20)) 

これは-2424

の結果を与えるので、私はこれは-2423

Iの結果を与え、次の

//Javascript - using datejs library 
a = Date.parse('2000/06/01').addMonths(60); 
b = Date.parse('2012/01/20'); 
a.setHours(12,0,0); 
b.setHours(12,0,0); 
span = new TimeSpan(a - b); 
console.log(span.getDays()); 

とJavaScriptで同じ計算をしようなぜ私は1日を失っているのか分からない。 誰かがこれがどう起こっているのかを明らかにすることはできますか?

事前にお気軽にお問い合わせください。 :)

+1

'EDATE()'と 'addMonths() 'によって計算されたものが、同じ日を参照しているかどうかを調べることができますか? –

+0

Excelの結果は正しいです:2005-06-01から、2006-01-01に到達するには30 + 31 + 31 + 30 + 31 + 30 + 31、次に365 * 6 + 1(2008年のうるう年)を2012-01-01に、次に19日を2012-01-20に取得します。 –

答えて

1

他に何もない場合は、どちらのアプリも考慮に入れることができる2005年と2008年の両方で2回のリープ秒が(いずれも12月31日)発生しました。明示的にJSの日付を「正午」に設定していますが、Excelの時刻が指定されていないため、リープ秒が発生した真夜中にデフォルト設定されている可能性があります。それはあなたのExcelの日付/時間をJSの計算から2秒遅らせ、真夜中の国境を越えることができ、失われた1日を占めます。

+0

私はもともと正午の設定はありませんでしたが、同じ結果が得られましたので、ここでいくつかの記事を読んだ後、助けがあるかどうかを確認するために追加しました。 – dibs

+0

javascriptで両方の日付の時刻を真夜中に設定しましたが、問題を解決したようです。ご協力いただきありがとうございます。 – dibs