簡體   English   中英

在SQL PHP中重復日歷事件

[英]Repeating calendar events in SQL PHP

我有一個循環,循環遍歷給定月份中的所有天,一個人可以從開始日期/時間創建事件並指定結束日期/時間。 我將合並的事件每隔xx天,xx個月或xx年重復一次。

我不知道如何在循環中匹配當前日期以查看重復是否已經開始。 假設我參加了為期3天的“ Pickup Silver”活動。 我希望從第二天開始每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]
#";

我建議您看一下iCalendar規則 如果您正在做一個非常基本的重復模式,那么就不用多管它了,因為它很大,但是很全面。 這至少會給您一個關於如何構造數據以及需要存儲什么的好主意,這是一個標准。 具體來說,您可能需要存儲重復發生的開始和結束日期以及事件的開始日期和時長。 據此,您可以推斷出當前日期是否與重復日期相交。

要記住的一點是,日歷計算實際上非常困難。 您需要考慮時區差異,夏令時(不僅在哪幾天,以及如何處理多余或丟失的小時數),leap年等。如果將所有異常因素都考慮在內,那么即使看起來很簡單的事情也可能變得非常復雜。情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM