我不认为我是幻觉,因为我已经尝试了十几次。这是我的代码:
$('#teo_prep_due').change(function() {
var ber = $('#ber_rcvd');
var tpd = $('#teo_prep_due');
var brDate = ber.datepicker('getDate');
var tpDate = tpd.datepicker('getDate');
var s1Date = new Date();
var s2Date = new Date();
var sdDate = new Date();
s1Date.setDate(brDate.getDate() + 5);
console.log(s1Date);
s2Date.setDate(tpDate.getDate() - 3);
console.log(s2Date);
if (s1Date < s2Date) {
sdDate.setDate(s1Date.getDate());
} else {
sdDate.setDate(s2Date.getDate());
}
$('#survey_due').datepicker('setDate', sdDate);
});
在我的日期表单上,我为February 28, 2013
输入了ber_rcvd
,为March 14, 2013
输入了teo_prep_due
。在代码之后,我的结果应为March 5, 2013
。但是, s2Date 会产生February 11, 2013
,就像正在减去整月和3天而不是仅仅3天一样。还有其他人遇到过这个吗?
使用:jquery-1.9.1.min.js
,jquery-migrate-1.1.1.js
和jquery-ui-1.10.1.min.js
。
答案 0 :(得分:1)
问题是.setDate()
没有设置日期,它设置了月份的日期。它以整数作为参数。当你创建s2Date
时,它默认为今天,即二月份。当你用-3添加tpDate.getDate()// equals 14
时,你得到11,因此在2月11日。