【问题标题】:Repeating calendar events in SQL PHP在 SQL PHP 中重复日历事件
【发布时间】:2013-04-17 05:49:01
【问题描述】:

我有一个循环,它遍历给定月份中的所有日子,人们可以从开始日期/时间创建事件并指定结束日期/时间。我正在合并可以每 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]
#";

【问题讨论】:

    标签: php sql


    【解决方案1】:

    我建议看看iCalendar RRULEs。如果您正在做一个非常基本的重复模式,那么不要为大部分内容烦恼,因为它非常大但非常全面。这至少会给你一个好主意,这是一个标准,关于如何构建你的数据以及你需要存储什么。具体来说,在您的情况下,听起来您需要存储重复的开始和结束日期以及事件的开始日期和长度。由此,您可以推断您的当前日期是否与重复日期相交。

    要记住的是,日历计算实际上非常困难。您需要考虑时区差异、夏令时(不仅是在哪几天,还有如何处理额外或缺失的小时)、闰年等。如果考虑到所有异常值,即使看起来很简单也可能变得相当复杂情况。

    【讨论】:

    • 感谢您的回复,我不知道如何在我的应用程序中使用 iCalendar RRULE。我知道这真的很复杂,我只是计算每个小时、天、周、月、年等的秒数。但它会给出错误的数据
    猜你喜欢
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    相关资源
    最近更新 更多