JavaScript日期差异修正

时间:2013-12-10 01:24:10

标签: javascript html

我有一个函数可以计算两个日期/时间之间的时间,但我对返回有一个小问题。

以下是我收集信息的方式。

开始日期 开始时间 结束日期 结束时间 小时

这是计算日期和时间的函数:

function calculate (form) {
    var d1 = document.getElementById("date1").value;
    var d2 = document.getElementById("date2").value;
    var t1 = document.getElementById("time1").value;
    var t2 = document.getElementById("time2").value;
    var dd1 = d1 + " " + t1;
    var dd2 = d2 + " " + t2;
    var date1 = new Date(dd1);
    var date2 = new Date(dd2);
    var sec = date2.getTime() - date1.getTime();
    if (isNaN(sec)) {
        alert("Input data is incorrect!");
        return;
    }
    if (sec < 0) {
        alert("The second date ocurred earlier than the first one!");
        return;
    }
    var second = 1000,
        minute = 60 * second,
        hour = 60 * minute,
        day = 24 * hour;
    var hours = Math.floor(sec / hour);
    sec -= hours * hour;
    var minutes = Math.floor(sec / minute);
    sec -= minutes * minute;
    var seconds = Math.floor(sec / second);
    var min = Math.floor((minutes * 100) / 60);
    document.getElementById("result").value = hours + '.' + min;
}


如果我在两个日期字段的今天日期,然后在第一个时间字段中的14:30和第二个时间字段中的15:35,结果显示为1.8,它应该是1.08

我没有写这个功能,但我想知道是否有人可以告诉我如何进行这项改变?

谢谢。

3 个答案:

答案 0 :(得分:1)

如果我理解正确,你遇到的唯一问题是分钟没有用零填充。如果是这种情况,您可以使用这个小技巧填充min的值:

("00" + min).slice(-2)

答案 1 :(得分:0)

验证分钟数是否小于10,如果是,则在前面添加额外的零。遵循类似的方法几秒钟。

答案 2 :(得分:0)

我不明白为什么15:35 - 14:30 = 1.08有用吗?

请改为尝试:

function timediff( date1, date2 ) {
      //Get 1 day in milliseconds
      var one_day=1000*60*60*24;

      // Convert both dates to milliseconds
      var date1_ms = date1.getTime();
      var date2_ms = date2.getTime();

      // Calculate the difference in milliseconds
      var difference_ms = date2_ms - date1_ms;
      //take out milliseconds
      difference_ms = difference_ms/1000;
      var seconds = Math.floor(difference_ms % 60);
      difference_ms = difference_ms/60; 
      var minutes = Math.floor(difference_ms % 60);
      difference_ms = difference_ms/60; 
      var hours = Math.floor(difference_ms % 24);  
      var days = Math.floor(difference_ms/24);

      return [days,hours,minutes,seconds];
    }

function calculate (form) {
    var d1 = document.getElementById("date1").value;
    var d2 = document.getElementById("date2").value;
    var t1 = document.getElementById("time1").value;
    var t2 = document.getElementById("time2").value;
    var dd1 = d1 + " " + t1;
    var dd2 = d2 + " " + t2;
    var date1 = new Date(dd1);
    var date2 = new Date(dd2);

    var diff = timediff(date1, date2);

    document.getElementById("result").value = diff[1] + ':' + diff[2];
}