我需要以与特定日期/时间的概念无关的方式存储重复的事件模式 - 即,模式不是在指定窗口内发生的完全重复的“事件”。具体来说,回答诸如以下问题:什么时候营业所开放,或者什么时候可以交付给那个机构。
示例可能是:每周一,周三和周四,10:00到12:00,周三也是2:00到4:00。
过去,我已经创建了具有特定于存储这种类型数据的结构的数据库表 - 即,对于需要描述的每种类型的窗口,每个机构定义具有多行的这些“时间窗口”的表。然而,我想摆脱这种方法,并采用更现代的东西 - 一种可解析的格式,其中iCal似乎是最有可能的候选者。如果有更好的东西,我想提供替代方案的建议。
我已经研究过坚果&amp;如何表达iCal重复模式的螺栓,并且必须说当我掌握基本原理时,我还不能完全看到我实际上是如何为上面发布的示例格式化单个iCal“事件”,即:< strong>没有特定的开始/结束日期,没有指定的出现次数等
我喜欢这方面的一些指导,并且看一个具体的例子,如果有人可以为我制定它。我的平台通常是.NET / C#,MSSQL,Outlook / Exchange。
答案 0 :(得分:2)
有一个新的iCalendar扩展,描述了这些名为VAVAILABILITY
的窗口:
答案 1 :(得分:1)
对于您的具体示例,您可能会考虑使用CRON表达式语法作为开始时间,然后包含持续时间字段。 CRON对于重复模式非常强大,但您可能还需要一些方法来排除日期(例如假期)。我一直在使用ncrontab进行最近的项目,它非常适合解析和发生事件的确定。
https://github.com/atifaziz/NCrontab
您可能仍然处于根据需要构建自定义数据库结构的情况,但您可以看到的一个选项是在数据库中添加一个列并存储序列化的JSON字符串而不是几个单独的表。 SQL Server 2016 / Azure SQL也可以本地查询JSON。