【问题标题】:Bootstrap 3 datepicker and moment issueBootstrap 3 日期选择器和时刻问题
【发布时间】:2016-09-18 01:44:00
【问题描述】:

我在一个页面上有 2 个bootstrap 3 datepickers。一个是签发日期,另一个是到期日期。我想将due_date 设置为issue_date + transactionDaysTerms(例如14 天)。

    $('#issue_date').datepicker({
    }).on('changeDate', function(event){

        $(this).datepicker('hide');
        var calculatedEndDate = moment($('#issue_date').val()).add(transactionDaysTerms, 'days');
        $('#issue_date').datepicker('setEndDate', calculatedEndDate);
        $('#due_date').datepicker('setEndDate', calculatedEndDate);

    }).on('clearDate', function(event){
        $(this).datepicker('setDate', today);
    });

我用moment 尝试了各种格式,但无济于事。此代码因

而失败
Uncaught TypeError: date.match is not a function

如何从 moment.js 获取日期格式以使用 datepicker?

【问题讨论】:

    标签: javascript jquery twitter-bootstrap datepicker


    【解决方案1】:

    这很好用。

        $('#issue_date').datepicker({
        }).on('changeDate', function(event){
            $(this).datepicker('hide');
            var calculatedEndDate = moment($(this).datepicker('getDate')).add(transactionDays, 'days').toDate();
            $('#issue_date').datepicker('setEndDate', calculatedEndDate);
            $('#due_date').datepicker('setDate', calculatedEndDate);
        }).on('clearDate', function(event){
            var calculatedEndDate = moment(today).add(transactionDays, 'days').format('L');
            $('#issue_date').datepicker('setEndDate', calculatedEndDate);
            $('#due_date').datepicker('setDate', calculatedEndDate);
        });
    

    我只需要在即时通话结束时.toDate()

    【讨论】:

    • 不,您需要使用.datepicker('getDate') 而不是$('#issue_date').val(),这意味着我的回答也可以。我确实对其进行了一些更改,因为 setDate 由于某种原因似乎不接受时间戳,而只接受另一个日期对象。
    【解决方案2】:

    难道你不能只使用getDate 从日期选择器中获取时间戳,然后将天数相乘得到毫秒,将其相加,然后设置结束日期

    $('#issue_date').datepicker().on('changeDate', function(event) {
    
        $(this).datepicker('hide');
    
        var date = $(this).datepicker('getDate');
        var days = transactionDaysTerms * 24 * 60 * 60 * 1000;
    
        var calculatedEndDate = new Date( date.getTime() + days );
    
        $('#issue_date, #due_date').datepicker('setEndDate', calculatedEndDate);
    
    }).on('clearDate', function(event) {
      $(this).datepicker('setDate', today);
    });
    

    FIDDLE

    【讨论】:

    • 嗨@adeneo,它不起作用,因为日期是以这种格式从选择器中提取的 2016 年 9 月 21 日星期三 00:00:00 GMT+1000(美国东部标准时间)。
    • 不,日期应该是一个javascript对象,如果你这样做console.log( typeof date )你会得到什么
    • docs 也很清楚... "返回一个本地化的日期对象,代表内部日期对象..."
    • console.log( typeof date ) 返回undefined。日期选择器 getDate 返回 Fri Sep 30 2016 00:00:00 GMT+1000(澳大利亚东部标准时间)。
    • undefined 就在那里?您是否在事件处理程序中添加了 console.log,就在 var date = ... 之后
    猜你喜欢
    • 2016-03-08
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多