jquery ui datepicker在边缘情况下添加6个月是错误的

时间:2014-09-05 23:21:03

标签: javascript jquery datepicker

我使用datepicker将结束日期设置为开始日期后的6个月。除了边缘情况,我所拥有的是工作。例。如果开始日期是2014年3月31日,则结束日期应为2014年9月30日。但是我得到2014年10月1日。我已经在其他帖子评论中了解到这是一个已知问题HereHere

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);
    }
}

1 个答案:

答案 0 :(得分: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;
}