Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript在两个日期和时间之间的小时差_Javascript_Jquery_Date_Datetime - Fatal编程技术网

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

javascript在两个日期和时间之间的小时差,javascript,jquery,date,datetime,Javascript,Jquery,Date,Datetime,我的html文件中有三个文本类型的输入字段 第一个输入字段称为旧日期和时间 第二个输入字段称为新日期和时间 第三个输入字段称为小时差 我想要的是: 如果用户先输入第一个输入字段(旧日期和时间),然后再输入第二个输入字段(新日期和时间),则第三个输入字段必须仅在第二个输入字段填充日期和时间后自动显示以小时为单位的差值,无焦点(onBlur) 如果第二个输入(新日期和时间)或第一个输入(旧日期和时间)为空,则第三个输入(小时差)不会给出答案 我非常高兴在第一次和第二次输入时有一个日期时间选择器

我的html文件中有三个文本类型的输入字段

  • 第一个输入字段称为旧日期和时间
  • 第二个输入字段称为新日期和时间
  • 第三个输入字段称为小时差
  • 我想要的是:

    • 如果用户先输入第一个输入字段(旧日期和时间),然后再输入第二个输入字段(新日期和时间),则第三个输入字段必须仅在第二个输入字段填充日期和时间后自动显示以小时为单位的差值无焦点(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 explores不支持input type=datetime local,所以我想使用input type text,但它总是给我NaN。

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

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

    请使用。这也可以改变日期和时间的格式

    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")
    
    请使用。这也可以改变日期和时间的格式

    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")
    

    如果您想使用纯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
    

    如果您想使用纯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
    

    到目前为止你们有什么?大家好,欢迎来到Stack Overflow。请通读一下,看看主题中有哪些问题。特别是,我们很乐意帮助您解决问题,但如果您需要为您编写代码(无需您的努力),我们建议您雇佣一名程序员。这看起来像是功能简介,而不是实际问题。我们不是你的个人开发团队。可能会对您有所帮助代码运行良好,现在我知道我是以dd-mm-yyyy格式输入日期的,而日期需要以dd/mm/yyyy格式输入。到目前为止,您有什么发现?您好,欢迎来到Stack Overflow。请通读一下,看看主题中有哪些问题。特别是,我们很乐意帮助您解决问题,但如果您需要为您编写代码(无需您的努力),我们建议您雇佣一名程序员。这看起来像是功能简介,而不是实际问题。我们不是你的个人开发团队。可能会对您有所帮助代码运行良好,现在我知道我是以dd-mm-yyyy格式输入日期的,而对于date@VonMicky:同样,正如其他人所说:如果在我们向您展示了代码的查找和/或修复方法之后,您自己无法更正代码,那么您应该雇佣一名程序员。试一试,让我们看看你想出了什么,我们会指出任何问题或回答你可能遇到的任何(具体的!)问题。@VonMicky:同样,正如其他人所说:如果在我们向你展示了如何查找和/或如何修复代码后,你不能自己更正代码,你应该雇佣一名程序员。试试看,让我们看看你想出了什么,我们会指出任何问题或回答你可能有的任何(具体的!)问题。将(新日期(this.value)-新日期(old.value))/(1000*60*60)替换为(新日期(this.value)。getTime()-新日期(old.value)。getTime())/(1000*60*60)get Time()做得很好。替换(新日期(this.value)-新日期(old.value))/(1000*60*60)和(new Date(this.value).getTime()-new Date(old.value.getTime())/(1000*60*60)get Time()很好地完成了这项工作。它工作起来非常出色