0

特定の月のすべての日をループして、開始日/時刻からイベントを作成し、終了日/時刻を指定できるループがあります。xx日、xxか月、またはxx年ごとにイベントを繰り返すことができる場所を組み込んでいます。

繰り返しが開始されたかどうかを確認するために、ループ内の現在の日付を照合する方法がわかりません。3日間のイベント「Pickup Silver」があったとします。これを2日から7日ごとに行いたいです。カレンダーは、開始日時から 7 日ごとにこのイベントを表示する必要があります。2、9、16、30 などの日から始まります。

#Loop starts and math calulates the current unix start of each day
##The SQL QUERY to lookup if there are any events starting or ending on this day 
#$SQL =" 
#SELECT
# Name as OutputTitle,
# ID
# FROM
#safe_calendar
#WHERE
#AutherID = '[AccountID]'
#AND
#AutherTable = '[TableName]'
#AND
#(UnixFrom - 86400) <  [UnixThisDay] 
#AND
#UnixEnd >= [UnixThisDay]
#";
4

1 に答える 1

0

iCalendar RRULEsをご覧になることをお勧めします。非常に基本的な繰り返しパターンを実行している場合は、この大部分を気にする必要はありません。かなり大規模ですが、非常に包括的なものだからです。これにより、データをどのように構造化し、何を保存する必要があるかについて、少なくとも標準である良いアイデアが得られます。具体的には、あなたの場合、繰り返しの開始日と終了日、およびイベントの開始日と長さを保存する必要があるようです。それから、現在の日が再発日と交差するかどうかを推測できます。

心に留めておくべきことは、カレンダーの計算は実際には非常に難しいということです. タイムゾーンの違い、夏時間 (何日だけでなく、余分な時間や不足している時間に対処する方法)、閏年などを考慮する必要があります。状況。

于 2013-04-23T21:18:29.413 に答える