我想創建一個簡單的腳本,給我下一個循環日期的基礎上2011年7月6日星期三開始的雙週時間表。所以我創建了這個簡單的功能.. 。簡單的JavaScript日期數學...不是真的
function getNextDate(startDate) {
if (today <= startDate) {
return startDate;
}
// calculate the day since the start date.
var totalDays = Math.ceil((today.getTime()-startDate.getTime())/(one_day));
// check to see if this day falls on a recycle day
var bumpDays = totalDays%14; // mod 14 -- pickup up every 14 days...
// pickup is today
if (bumpDays == 0) {
return today;
}
// return the closest day which is in 14 days, less the # of days since the last
// pick up..
var ms = today.getTime() + ((14- bumpDays) * one_day);
return new Date(ms);
}
,並可以調用它就像...
var today=new Date();
var one_day=1000*60*60*24; // one day in milliseconds
var nextDate = getNextDate(new Date(2011,06,06));
到目前爲止好......但是當我 「今天」 工程10/27/2011,我得到11/8星期二/ 2011作爲下一個日期,而不是2011年11月9日星期三...實際上,從現在到2011年10月26日,每一天都計劃正確的接機...以及從10/27/2011到2的每個日期/ 28/2012項目週二而不是週三。然後每個從2012年2月29日(閏年)到2012年10月24日(嗯,十月再次)的日期正確投影星期三。我錯過了什麼?任何幫助將不勝感激..
V
不應該是地板?因爲你使用2011-06-06 1:00u totalDays將是1,並且下一次取件將在13天而不是14天,因此是星期二。 – Gerben 2011-06-15 10:33:32
看起來很奇怪。我正在用'one_day = 1000 * 60 * 60 * 24獲得正確的日期;今天=新日期(2011,8,27); nextDate = getNextDate(new Date(2011,6,6));',nextDate是'Wed Sep 28 2011 00:00:00 GMT +',這是正確的嗎?測試FF4。 – Raze 2011-06-15 11:00:18
startDate總是新的日期(2011,06,06) - 所以它不應該移動 – user799301 2011-06-15 11:12:46