jQuery UI Timepicker关闭1分钟

时间:2017-08-07 03:19:18

标签: jquery-ui-timepicker

我正在维护一个使用jQuery UI Timepicker并尝试解决错误的应用程序。

基本上,这是重新创建它的方法:

有2个时间戳,开始时间结束时间
1.在开始时间,选择上午6:00(来自小时区域
2.在结束时间,选择中午12:00(从小时区域) 3.返回开始时间并从分钟区域

中选择00

然后运行一些代码来确定以分钟为单位的经过时间。该代码是:

    function setDuration() {

        var $startTime = $(".field.times input[name$='StartTime']");
        var $endTime = $(".field.times input[name$='EndTime']");

        var $durationHours = $(".field.duration input[name$='DurationHours']");
        var $durationMinutes = $(".field.duration input[name$='DurationMinutes']");

        if ($startTime.val() != "" && $endTime.val() != "") {

            var startTime = $startTime.timepicker ? $startTime.timepicker('getTimeAsDate') : Date.parse('01 jan 01 ' + $startTime.val(), "hh:mm tt");
            var endTime = $endTime.timepicker ? $endTime.timepicker('getTimeAsDate') : Date.parse('01 jan 01 ' + $endTime.val(), "hh:mm tt");
            var duration = (endTime - startTime) / 1000 / 60;

            //check whether spanning multiple days
            if (startTime > endTime) {
                duration = duration + (60 * 24);
            }

            $durationHours.val(Math.floor(duration / 60));
            $durationMinutes.val(duration % 60);
        }
    }

我发现在完成第1步和第2步后,一切都很好 但是,如果我完成步骤3,则为 endTime 局部变量分配一个日期对象,其时间分量为11:59而不是12:00。

关闭1分钟。

如果我转到结束时间选择器并从分钟区域中选择00,就像我使用开始时间选择器一样,已经过去的时间权利本身。

作为调试时的有趣观察,在步骤1和2之后两个时间戳都落后1分钟。也就是说,它们是在5:59和11:59。经过的时间是正确的,因为差异很重要。但正如所说,一旦用户从小时区域中选择00,它似乎就会自己“#34;对于那个选择器,差异是1分钟(直到另一个选择器完成相同的事情)。

Javascript日期很难!帮助会很棒。

1 个答案:

答案 0 :(得分:0)

是的,想通了。我想这是一个自以为是的组件,它认为用户必须从分钟区域中选择分钟数字。因为如果他们不这样做,则会议记录为-1 很公平。

为了解决这个问题,在onSelect处理程序中,我写了一些类似的代码:

$('#timepicker').timepicker({
        onSelect: function (time, inst) {                 
            if (inst.minutes < 0)
                inst.minutes = 0;
        }
});

在我们的应用中,如果他们没有选择“00”&#39;或任何其他会议记录,将被假定为0。