これは、基本的に、特定のイベントの最初の日付を設定してから、繰り返し期間を設定できるシステム用です。
例えば。今から1週間後の2012年7月19日に日付を設定したので、猫をミルクと一緒に出さなければならないことを知っています。また、毎週の通知に設定しているので、今後数週間は通知を受け取りたいと思います。
その元の日付は私のデータベースにあります。これは第1週には問題ありませんが、第2週には、元の日付に1週間を加えたものとして返す必要があります。
一見、それは簡単に思えるかもしれませんが、うるう年とさまざまな再発頻度(隔週、毎月、毎年など)を考慮できるようにする必要があります。
これをjavascriptの実装として保持したいと思います。これは、データベースの日付を更新するよりも高速で、必要なコードが少ないと思われるためです。多分それは達成可能ではないでしょう、どんなポインタも素晴らしいでしょう。
私はこれらが出発点かもしれないと思います:
開始日を指定して、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);
}