Próbuję stworzyć prosty skrypt, który da mi kolejną datę recyklingu opartą na dwutygodniowym harmonogramie, który rozpocznie się 6 marca 2011 r. Stworzyłem tę prostą funkcję .. .Proste daty matematyczne javascript ... nie tak naprawdę
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);
}
i można go nazwać jak ...
var today=new Date();
var one_day=1000*60*60*24; // one day in milliseconds
var nextDate = getNextDate(new Date(2011,06,06));
tej pory tak dobrze ... ale kiedy projekt "Today" do 10/27/2011, mam wtorek 11/8/2011 jako następna data zamiast ze środy 11/9/2011 ... W rzeczywistości każdego dnia do dnia 26 listopada 2011 r. Projektuje prawidłowy odbiór ... i każdą datę od 27.02.2011 do 2/28/2012 projekty wtorek, a nie środę. A następnie każda data od 2/29/2012 (rok przestępny) do 10/24/2012 (hmmm październik ponownie) prawidłowo wyświetla środę. czego mi brakuje? Każda pomoc będzie mile widziana ..
V
Czy sufit nie powinien być podłogą? Ponieważ używasz 2011-06-06 1: 00u totalDays będzie 1, a następny odbiór będzie w 13 nie 14 dni, więc wtorek. – Gerben
Wygląda dziwnie. Dostaję poprawną datę z 'one_day = 1000 * 60 * 60 * 24; dzisiaj = nowa data (2011,8,27); nextDate = getNextDate (nowa data (2011,6,6)); ', a nextDate to" śro 28 września 2011 00:00:00 GMT + ", co jest poprawne, prawda? Testowane na FF4. – Raze
StartDate jest zawsze nowy Data (2011,06,06) - więc nie powinien się ruszać – user799301