【问题标题】:Difference in hours between two dates and times by javascript [closed]javascript在两个日期和时间之间的小时差[关闭]
【发布时间】:2015-09-25 06:28:22
【问题描述】:

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

  1. 第一个输入字段称为 OLD DATE & TIME。
  2. 第二个输入字段称为 NEW DATE & TIME。
  3. 第三个输入字段称为 DIFFERENCE IN HOURS。

我想要的是:

  • 如果用户输入第一个输入字段(旧日期和时间),然后输入第二个输入字段(新日期和时间),则第三个输入字段必须自动显示小时差异在第二个输入字段填充日期和时间和松散焦点(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 不支持输入类型 =datetime-local,所以我想使用输入类型文本,但它总是给我 NaN。

【问题讨论】:

  • 到目前为止你有什么?
  • 您好,欢迎来到 Stack Overflow。请阅读Stack Overflow help on asking 以了解有关主题的问题类型。特别是,我们很乐意帮助您解决问题,但如果您需要为您编写代码(无需您付出任何努力),我们建议您改为聘请程序员。
  • 这读起来像是功能简介,而不是实际问题。我们不是您的个人开发团队。
  • 代码运行良好,现在我知道我输入的日期是 dd-mm-yyyy 这种格式,而日期需要采用 dd/mm/yyyy 格式

标签: javascript jquery date datetime


【解决方案1】:

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

【讨论】:

  • 效果非常棒
【解决方案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")

【讨论】:

  • @VonMicky:同样,正如其他人所说:如果在我们向您展示了在哪里查看和/或如何修复代码之后您不能自己更正您的代码,您应该聘请一名程序员。试一试,让我们看看您的想法,我们会指出任何问题或回答您可能遇到的任何(具体!)问题。
【解决方案3】:

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

【讨论】:

  • 将 (new Date(this.value) - new Date(old.value))/(1000*60*60) 替换为 (new Date(this.value).getTime() - new Date (old.value).getTime())/(1000*60*60)
  • get Time() 做得很好。
猜你喜欢
  • 2022-09-23
  • 2014-01-17
  • 2017-05-16
  • 2023-03-24
  • 1970-01-01
  • 2012-10-26
  • 2021-10-09
  • 1970-01-01
相关资源
最近更新 更多