このように計算された月の日数:
var start = new Date(d.getFullYear(),d.getMonth(),1);
var end = new Date(d.getFullYear(),d.getMonth()+1,1);
var daysInCurMonth = parseInt((end-start)/(1000*60*60*24));
d
は実際の日付で、3 月の場合は値を保持します (FireBug コンソールから):Date {Thu Mar 01 2012 00:00:00 GMT+0200}
parseInt((end-start)/(1000*60*60*24))
結果は30ですが、
(end-start)/(1000*60*60*24)
結果30.958333333333332
関数を使用する場合、 31に丸めることを期待していparseInt()
ます。
Math.round((end-start)/(1000*60*60*24))
結果は31で、これは 2012 年 3 月のものです。
Math.round()
日付を扱うときにに頼っても大丈夫ですか?