【问题标题】:How to get the time span between two date picker values in Javascript?如何在Javascript中获取两个日期选择器值之间的时间跨度?
【发布时间】:2016-07-13 06:02:37
【问题描述】:

我在 HTML5 表单中添加了两个 Bootstrap 日期时间选择器。到目前为止,我可以使用控件的更改事件来捕获每个选择器的 DateTime 值。

现在我遇到了两个 DateTime 选择器之间的时间跨度差异需要存储为 var 的情况。

我确实遇到了一个类似于ask here 的示例。但是当实际时间选择器值发生变化时,我在下面的简短实现会提醒“Nan”值而不是预期的时间跨度差。

问题:

如何计算 Javascript 或 JQuery 中两个日期选择器值之间的时间跨度?

代码要点:

var start;
var actual;

$("#OutageStartDisplay").on("dp.change", function (e) {
    start = $('#OutageStart').val(moment(e.date).format());
});


//On change of the ActualDisplay datetime picker 
//update's the Actual hidden field with the datetime.
$("#ActualDisplay").on("dp.change", function (e) {
    actual = $('#Actual').val(moment(e.date).format());

    //If the actual is set, calculate the outage duration
    var timeDiff = Math.abs(start - actual);
    var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
    alert(diffDays);

});

【问题讨论】:

  • 您是否尝试在设置所有变量后记录它们的值?也许其中一个不是您所期望的类型。

标签: javascript twitter-bootstrap-3 datetimepicker timespan difference


【解决方案1】:

由于您使用的是时刻,您可以使用moment.diff 来获取时差。

您的代码似乎也有点错误,当您执行$("whatever").val(something) 时,您将"whatever"s 的值设置为something,它返回$("whatever"),而不是值。所以你试图从另一个 JQuery 对象中减去一个 JQuery 对象。但即使它返回了 val,你的 val 也是一个字符串 - 你也不能减去它。

所以你可能想要这个:

var start;
var actual;

$("#OutageStartDisplay").on("dp.change", function (e) {
    start = moment(e.date);
    $('#OutageStart').val(start.format());
});

$("#ActualDisplay").on("dp.change", function (e) {
    actual = moment(e.date);
    $('#Actual').val(actual.format());

    //If the actual is set, calculate the outage duration
    alert(actual.diff(start));
});

【讨论】:

  • 好的,这似乎以毫秒为单位输出差异。是否有演员可以在几小时内输出这个?
  • momentjs.com/docs/#/displaying/difference 您可以将度量单位传递给 moment.diff。 actual.diff(start, "hours")
  • 好吧,有什么办法可以将差异转换为 Day: HH: MM string or timepspan via JS?例如 1 天,4 小时,45 分钟
  • moment 对我来说是新的,它可能有办法,但在有更好的方法之前,你可以做 actual.diff(start, "days") + ": " + actual.diff(start , "小时") 等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-07
  • 2017-01-17
  • 1970-01-01
相关资源
最近更新 更多