這是一個系統,基本上允許您設置給定事件的第一個日期,然後設置重現週期。如何有效計算連續日期給定的原始日期
例如,我從現在開始設定一個星期的日期,2012年7月19日,所以我知道我必須把這隻貓放在牛奶裏。我還將其設置爲每週通知,因此在未來幾周內我希望得到相同的通知。
原始日期位於我的數據庫中,這對於第1周來說是正確的,但在第2周我需要將原始日期作爲原始時間加上1周。表面上看來,這似乎很簡單,但我需要確保我能夠解釋閏年和不同的重現頻率(每兩週,每月,每年,不管)。
我想保留它作爲一個JavaScript實現 - 因爲它更快,我覺得可能需要比更新數據庫中的日期更少的代碼。也許這是不可實現的,任何指針都會非常出色。
我覺得這可能是一個起點:
Given a start date , how to calculate number of years till current date in javascript
更新,我寫了下面的返回的時間量在每個不同的情況下添加,從那裏我可以使用下面的答案:
var strDate = $(this).find('.next').text();
var frequency = $(this).find('.occurs').text();
var frmDate = getDateObject(strDate);
var toDate = new Date();
var days = parseInt(Math.floor((frmDate - toDate)/86400000));
if(days < 0) {
// find out how many WHOLE 'frequencies' have passed
var weeks = Math.ceil(0 - (days/7));
var months = Math.ceil(0 - (monthDiff(toDate,frmDate)));
var years = Math.ceil(months/12);
//alert(days + '/' + weeks + '/' + fortnights + '/' + months + '/' + quarters + '/' + years);
if(frequency == 'Weekly') { frmDate.add(weeks).weeks(); }
if(frequency == 'Fortnightly') { frmDate.add(weeks*2).weeks(); }
if(frequency == 'Monthly') { frmDate.add(months).months(); }
if(frequency == 'Quarterly') { frmDate.add(months*3).months(); }
if(frequency == 'Annually') { frmDate.add(years).years(); }
var newdate = frmDate.toString("dd/MM/yyyy");
//alert(newdate);
$(this).find('.next').text(newdate);
}
我能看到的這個演示看看下面的代碼,如果你已經完成了它在2012年?:)我遇到了同樣的問題,並執行它的遞歸部分的問題。任何幫助將不勝感激。謝謝。 – Superman 2015-01-04 05:18:09