【问题标题】:jquery ui datepicker add 6 months is wrong in edge casesjquery ui datepicker add 6 months 在边缘情况下是错误的
【发布时间】:2014-09-05 23:21:02
【问题描述】:

我正在使用 datepicker 将结束日期设置为开始日期后 6 个月。除了边缘情况外,我所拥有的是工作。例子。如果开始日期是 2014 年 3 月 31 日,那么结束日期应该是 2014 年 9 月 30 日。但是我得到了 2014 年 10 月 1 日。我在其他线程 cmets Here 中了解到这是一个已知问题 和Here

在 JQuery 或 datepicker 中是否有一些东西或一种简单的方法可以在这样的边缘情况下更正日期?

这个问题可能已经有了答案,但我没能找到答案。任何帮助将不胜感激。

这是精简的代码和我制作的demo,它显示了示例。

$("#StartDate").datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: "dd-M-yy",
    onSelect: function () {
        autoFillEndDate(); 
        }
 });
 $("#EndDate").datepicker({
     changeMonth: true,
     changeYear: true,
     dateFormat: "dd-M-yy"
 });

function autoFillEndDate() {
    if ($('#StartDate').val().length !== 0) {

        var offset;
        var offsetType;
        var StartDate = $('#StartDate').datepicker('getDate');

        var newDate = StartDate.setMonth(StartDate.getMonth() + 6);
        var EndDT = $.datepicker.formatDate('dd-M-yy', new Date(newDate));

        $('#EndDate').datepicker("setDate",EndDT);
    }
}

【问题讨论】:

    标签: javascript jquery datepicker


    【解决方案1】:

    你见过this answer吗?

    用给定的函数更新了你的小提琴,它得到了 30-sep:

    http://jsfiddle.net/z3yshuzc/1/

    function addMonths(dateObj, num) {
    
        var currentMonth = dateObj.getMonth() + dateObj.getFullYear() * 12;
        dateObj.setMonth(dateObj.getMonth() + num);
        var diff = dateObj.getMonth() + dateObj.getFullYear() * 12 - currentMonth;
    
        // If don't get the right number, set date to 
        // last day of previous month
        if (diff != num) {
            dateObj.setDate(0);
        } 
        return dateObj;
    } 
    

    【讨论】:

      猜你喜欢
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多