0

次のスクリプトを使用して、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;

            }
4

1 に答える 1

1

これはおそらく答えではないはずですが、時間を節約し、javascript でクリーンな日付計算を行いたい場合は、moment.jsを使用してください。

于 2012-10-05T06:50:06.837 に答える