4

我有两个链接的 Bootstrap 日期时间选择器。这是他们的代码:

var d = new Date();
var one_month = d.setMonth( d.getMonth( ) + 1 );

$(function () {
    $('#pick1').datetimepicker({
            locale: 'en',
            sideBySide: true,
            defaultDate: new Date(),
            minDate: new Date(),
            format: 'DD/MM/YYYY HH:mm',
            stepping: 15
    });

    $('#pick2').datetimepicker({
            locale: 'en',
            sideBySide: true,
            defaultDate: one_month,
            minDate: new Date(),
            format: 'DD/MM/YYYY HH:mm',
            stepping: 15
    });

    $('#pick1').on('dp.change', function (e) {
            $('#pick2').data('DateTimePicker').minDate(e.date);
    });
    $('#pick2').on('dp.change', function (e) {
            $('#pick1').data('DateTimePicker').maxDate(e.date);
    });
});

我遇到的问题是取决于现在的时间,其中一个选择器(通常pick1)不显示默认日期。

这是一个 jsFiddle 来说明:

https://jsfiddle.net/6xbt5wa9/1/

(如果看起来没问题,几分钟后再次运行)

我认为这个问题与stepping选项有关,这只是因为如果您将其注释掉,它可以解决问题。

这个问题似乎也与步进数字的开始有关。因此,如果stepping设置为 15;第 15、16、17 分钟会有问题,但到 30 分钟则不会。我还没有测试这个假设得出结论,生命太短暂了。

任何人都可以帮忙吗?我错过了什么吗?

4

2 回答 2

4

我刚刚遇到了这个确切的问题,这个问题已经在插件GitHub 页面上提出,看起来这个 bug 仍然有待修复。

发生这种情况的原因是步进器四舍五入到最接近的值。所以有时这意味着四舍五入到最接近的 15,这可能是 before minDate = moment()

示例:上午 11:18 将向下舍入到上午 11:15,但这是在moment() 使其无效之前。

此解释由 GitHub 问题提出者提供。

问题提出者继续提供一个 hacky 解决方法,我不确定它有多可靠。也许这个问题仍在解决,但它是前一段时间提出的!

我想我会与每个人分享这些信息(即使这是一个老问题!)因为在这方面没有很多帮助。

于 2016-03-02T11:31:10.623 回答
1
$(function () {
    $('#pick1').datetimepicker({
            locale: 'en',
            sideBySide: true,
            defaultDate: new Date(),
            minDate: new Date(),
            format: 'DD/MM/YYYY HH:mm',
            stepping: 15
    });

    $('#pick2').datetimepicker({
            locale: 'en',
            sideBySide: true,                  
            minDate: new Date(),
            format: 'DD/MM/YYYY HH:mm',
            stepping: 15
    });

    $('#pick1').on('dp.change', function (e) {
            $('#pick2').data('DateTimePicker').minDate(e.date);
    });
    $('#pick2').on('dp.change', function (e) {
            $('#pick1').data('DateTimePicker').maxDate(e.date);
    });
});
于 2017-07-24T16:46:14.197 回答