0

我有以下代码不想正确地将 5 天添加到日期。这是代码:

// Grab previous session date so we can add 5 days and get new minDate
var currdate = new Date();
var one_day=1000*60*60*24;
var info = '';
var minDateBase = document.getElementById("class" + prevSession +  "_date").value;
var maxDateBase = document.getElementById("class1_date").value;
var minDateBits = minDateBase.split('-');
var maxDateBits = maxDateBase.split('-');
// Example Date working date 08-27-2012
// Example Date Not working date 09-03-2012
var minDate = new Date(minDateBits[2],minDateBits[0],minDateBits[1]);
var maxDate = new Date(maxDateBits[2],maxDateBits[0],maxDateBits[1]);
info = 'Selected Session Date: ' + minDate + '.' + "\n";
info = info + 'Class 1 date         : ' + maxDate + '.' + "\n";
var newMinDate = new Date();
var newMaxDate = new Date();
newMinDate.setUTCDate(minDate.getUTCDate() + 5);
newMaxDate.setUTCDate(maxDate.getUTCDate() + 42);
info = info + 'New Min. Date        : ' + newMinDate + '.' + "\n";
info = info + 'New Max Date         : ' + newMaxDate + '.' + "\n";
var maxDateDiff = newMaxDate.getTime() - currdate.getTime();
var minDateDiff = newMinDate.getTime() - currdate.getTime();
minDateDiff = Math.ceil(minDateDiff/one_day);
maxDateDiff = Math.ceil(maxDateDiff/one_day);
info = info + 'Min. Date Diff       : ' + minDateDiff + '.' + "\n";
info = info + 'Max  Date Diff       : ' + maxDateDiff + '.' + "\n";
alert (info);

这是最后工作“信息”警报的输出:

选定的会议日期:2012 年 8 月 20 日星期一 00:00:00 GMT-0600(山地夏令时间)。
第 1 类日期:2012 年 8 月 20 日星期一 00:00:00 GMT-0600(山地夏令时间)。
新敏 日期:2012 年 8 月 25 日星期六 09:13:19 GMT-0600(山地夏令时间)。
新的最大日期:2012 年 10 月 1 日星期一 09:13:19 GMT-0600(山地夏令时间)。
分钟。日期差异:13。
最大日期差异:50。

这是最后非工作“信息”的输出..

选定的会议日期:2012 年 9 月 3 日星期一 00:00:00 GMT-0600(山地夏令时间)。
第 1 类日期:2012 年 9 月 3 日星期一 00:00:00 GMT-0600(山地夏令时间)。
新敏 日期:2012 年 8 月 8 日星期三 09:15:09 GMT-0600(山地夏令时间)。
新的最大日期:2012 年 9 月 14 日星期五 09:15:09 GMT-0600(山地夏令时间)。
分钟。日期差异:-4。
最大日期差异:33。

为什么“最小日期”保持相同的月份值导致时差为-4的任何想法?

谢谢,

银虎

** 更新 **

我的最后一个想法似乎已经解决了这个问题,更新了以下代码以反映:

var minDate = new Date(minDateBits[2],parseFloat(minDateBits[0]) - 1,minDateBits[1]);
var maxDate = new Date(maxDateBits[2],parseFloat(maxDateBits[0]) - 1,maxDateBits[1]);
info = 'Selected Session Date: ' + minDate + '.' + "\n";
info = info + 'Class 1 date         : ' + maxDate + '.' + "\n";

var newMinDate = new Date();
var newMaxDate = new Date();

newMinDate.setTime(minDate.getTime() + (5 * one_day));
newMaxDate.setTime(maxDate.getTime() + (42 * one_day));

我会继续测试,但它在最初的几次尝试中都有效......

4

0 回答 0