繁体   English   中英

如何获取Javascript中两个日期选择器值之间的时间跨度?

[英]How to get the time span between two date picker values in Javascript?

我在HTML5表单中添加了两个Bootstrap Datetime选择器。 到目前为止,我可以使用控件的change事件捕获每个选择器的DateTime值。

现在,我需要将两个DateTime选择器之间的时间跨度差异存储为var。

我也碰到过类似这样的例子在这里提问 但是,当更改实际时间选择器的值时,下面的简短实现会警告“ 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);

});

由于使用的是矩,因此可以使用moment.diff来获取时差。

您的代码似乎也有些bug,当您执行$("whatever").val(something) ,您正在将"whatever"的值设置为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));
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM