次のスクリプトを使用して、2 つの日付の日付の差を (時間とともに) 計算します。ほとんどの入力で問題なく動作しますが、一部の入力で間違った出力が返されるという問題があります。このコードの問題点
たとえば、日付の差を計算するとき
2012/01/10 午前11時
と
2012 年 2 月 10 日午前 12 時
結果として2日を返しますが、その13時間です(私のアプリケーションの特別な丸めとして、1日と見なされます)または、これに代わる方法はありますか。さらに詳細が必要な場合はコメントしてください。
function dstrToUTC(ds) {
var dsarr = ds.split("/");
var dd = parseInt(dsarr[0],10);
var mm = parseInt(dsarr[1],10);
var yy = parseInt(dsarr[2],10);
var hh = parseInt(dsarr[3]);
return Date.UTC(yy,mm-1,dd,hh,0,0);
}
function datediff() {
var roomFrom=$("#room_from").val()+"/"+$("#room_time_from").val();
var foomTo=$("#room_to").val()+"/"+$("#room_time_to").val();
var d1 = dstrToUTC(roomFrom);
var d2 = dstrToUTC(foomTo);
var oneday = 86400000;
var dayDiff=(d2-d1) / oneday;
var dayDiff2=Math.floor(dayDiff);
//used to handle less than one day and, extra hours to a day
if(dayDiff>dayDiff2)
dayDiff=dayDiff2+1;
document.getElementById("room_nodays_add").value=dayDiff;
}