datepicker自定义日期更改格式

时间:2014-02-18 15:53:28

标签: javascript php jquery

我有一个工作按钮'CSA'显示今天的日期+ 6个月,但日期显示为2014-8-18。现在我想要的是2014-08-18,每个月这个,每个月2位数.... 工作jsfiddle

    $(function () {
        $(".datepicker").datepicker({
            dateFormat: "yy-mm-dd",
            changeMonth: true,
            changeYear: true,
            yearRange: "2014:2034",
            showButtonPanel: true,
            beforeShow: function (input) {
                setTimeout(function () {
                    var buttonPane = $(input)
                        .datepicker("widget")
                        .find(".ui-datepicker-buttonpane");

                    var btn = $('<button class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" type="button">CSA</button>');
                    btn.unbind("click")
                        .bind("click", function () {
                            //$.datepicker._clearDate(input);
                            //alert('custom text');
                            $(input).datepicker("hide");
                            var date = new Date();
                            date.setMonth(date.getMonth() + 7);
                            $(input).val(date.getFullYear() + '-' +
                                date.getMonth() + '-' + date.getDate());

                        });


                    btn.appendTo(buttonPane);

                }, 1);
            }
        });

});

2 个答案:

答案 0 :(得分:1)

您可以将代码调整为:

(date.getMonth()+ 7&lt; 10?'0'+ date.getMonth()+ 7:date.getMonth()+ 7)

我忘了这个事实,如果今年下半年,我们会回到明年。如果它超过6个月说20个月,那么这也是一个问题。这里是mod运算符(%)派上用场的地方。它在右侧划分时给出余数(例如,见documentation)。

让我们创建一个名为monthsToAdd

的变量

然后你可以说

var resultingMonth = (date.getMonth()+monthsToAdd)%12,
    displayedMonth = (resultingMonth < 10 ? '0'+ resultingMonth : resultingMonth);

所以完整的代码是:

$(function () {
  var resultingMonth = (date.getMonth()+monthsToAdd)%12,
      displayedMonth = (resultingMonth < 10 ? '0'+ resultingMonth : resultingMonth);
  $(".datepicker").datepicker({
      dateFormat: "yy-mm-dd",
      changeMonth: true,
      changeYear: true,
      yearRange: "2014:2034",
      showButtonPanel: true,
      beforeShow: function (input) {
          setTimeout(function () {
              var buttonPane = $(input)
                  .datepicker("widget")
                  .find(".ui-datepicker-buttonpane");

              var btn = $('<button class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" type="button">CSA</button>');
              btn.unbind("click")
                  .bind("click", function () {
                      //$.datepicker._clearDate(input);
                      //alert('custom text');
                      $(input).datepicker("hide");
                      var date = new Date();
                      date.setMonth(displayedMonth);
                      $(input).val(date.getFullYear() + '-' +
                          date.getMonth() + '-' + date.getDate());

                  });


              btn.appendTo(buttonPane);

          }, 1);
      }
  });
});

我刚才意识到这是在错误的范围内。所以:

$(function () {
  $(".datepicker").datepicker({
      dateFormat: "yy-mm-dd",
      changeMonth: true,
      changeYear: true,
      yearRange: "2014:2034",
      showButtonPanel: true,
      beforeShow: function (input) {
          setTimeout(function () {
              var buttonPane = $(input)
                  .datepicker("widget")
                  .find(".ui-datepicker-buttonpane");

              var btn = $('<button class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" type="button">CSA</button>');
              btn.unbind("click")
                  .bind("click", function () {
                      //$.datepicker._clearDate(input);
                      //alert('custom text');
                      var date = new Date(),
                          monthsToAdd = 7,
                          resultMonth =((date.getMonth()+monthsToAdd)%12),
                          displayMonth = (resultMonth < 10 ? '0'+ resultMonth: resultMonth);
                          $(input).datepicker("hide");
                          $(input).val(date.getFullYear() + '-' +
                          displayMonth + '-' + date.getDate());

                  });


              btn.appendTo(buttonPane);

          }, 1);
      }
  });
});

这是我的fiddle

答案 1 :(得分:0)

我建议使用DateJS。这也将处理你的“边缘情况”,如闰年。

以下是一个例子:

var date = new Date();
var dataPlus6Months = date.addMonths(6);

参考。 https://code.google.com/p/datejs/wiki/APIDocumentation