通过javascript在两个日期和时间之间的小时差异

时间:2015-09-25 06:28:22

标签: javascript jquery date datetime

我的html文件中有三个类型为text的输入字段。

  1. 第一个输入字段称为OLD DATE& TIME。
  2. 第二个输入字段称为NEW DATE& TIME。
  3. 第三个输入字段称为DIFFERENCE IN HOURS。
  4. 我想要的是:

    • 如果用户输入第一个输入字段(旧日期和时间)然后输入第二个输入字段(新日期和时间),则第三个输入字段必须自动显示小时差异 在第二个输入字段填充日期&时间和松散焦点(onBlur)
    • 如果第二个输入(新日期和时间)或第一个输入(旧日期和时间)为空,则第三个输入(小时数差异)将不给出答案。

    我很高兴在第一和第二个输入上有一个日期时间选择器

    以下是代码:

    <label>OLD DATE & TIME: </label>
    <input id="old" type="datetime-local" name="old" />
    <p>
        <label>NEW DATE & TIME: </label>
        <input id="new" type="datetime-local" name="new" onBlur="document.getElementById('total').value = (new Date(this.value) - new Date(old.value))/(1000*60*60)" />
    <p>
    <label>DIFFERENCE IN HOURS :</label>
    <br>
    <input id="total" type="text" name="total" onChange="changeDate()" />
    

    我知道firefox和Internet探索不支持输入类型= datetime-local,所以我想使用输入类型文本,但它总是给我NaN。

3 个答案:

答案 0 :(得分:5)

如果你想使用普通的javascript,你可以用这种方式进行计算..

    var fromDate = parseInt(new Date(oldDate).getTime()/1000); 
    var toDate = parseInt(new Date(newDate).getTime()/1000);
    var timeDiff = (toDate - fromDate)/3600;  // will give difference in hrs

答案 1 :(得分:2)

请使用moment.js。这也可以改变日期和时间的形式。

var now  = "04/09/2013 15:00:00";
var then = "04/09/2013 14:20:30";

moment.utc(moment(now, "DD/MM/YYYY HH:mm:ss").diff(moment(then, "DD/MM/YYYY HH:mm:ss"))).format("HH:mm:ss")

答案 2 :(得分:0)

Date对象有一个getTime()方法,它返回自1970年1月1日午夜以来的毫秒数。您可以为要处理的两个日期创建一个Date对象,在每个上调用getTime(),减去差异并将结果转换为小时。