我有一个工作按钮'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);
}
});
});
答案 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);