是否有存储和解析日历日期重复字符串的标准?

Posted

技术标签:

【中文标题】是否有存储和解析日历日期重复字符串的标准?【英文标题】:Is there a standard for storing and parsing strings for calendar date recurrence? 【发布时间】:2012-04-21 08:07:38 【问题描述】:

我正在尝试将重复事件信息存储到数据库中。我想将记录器存储到具有以下字段的数据库表中。

开始日期 - 日期时间 结束日期 - 日期时间 RecurrencePattern - 字符串

我想看看是否已经有一些标准格式来存储 RecurrencePattern 和一个关联的库来解析这个字符串 recurrenPattern 和一个开始/结束日期并转换成一组日期。我看到 this exists 用于 javascript,所以可能是 C# 或类似的端口?

要将事件序列化到数据库,我真的必须创建一个新的 iCalendar 并为每个事件序列化一个日历吗?有没有办法使用这个库简单地将事件本身序列化到数据库?

根据 Jon Skeet 的回答更新了关于 DDay.iCal 的问题:

根据 jon skeet 的建议,我开始查看 DDay.iCal,它看起来非常好。我的一个后续问题是,在示例中,它似乎一次只能从磁盘读取一个完整的 ical (ics)。就我而言,我只是将事件独立存储在数据库表中。最好的方法是什么:

    从数据库中读取这些事件 将独立事件保存到数据库(每个事件是数据库表中的一行)

使用这个库?

【问题讨论】:

与您的问题没有直接关系,但可以在here (pdf)找到一个很好的表示日历中重复出现的模型 你也可以存储一个 cron 字符串。这将代表事件的重复发生。 【参考方案1】:

有DDay.iCal 库。不能说我用过它,但这是快速搜索 iCalendar 和 C# 找到的那个...(iCalendar 或 RFC 5545 是 Javascript 格式的来源。)

根据我在其他平台上处理这些事情的经验,重复真的很快就会变得复杂。如果您能从一开始就限制您的范围,那么您将在 IMO 取得更大的成功。

【讨论】:

感谢 Jon,这个库似乎非常有用。鉴于我将每个事件持久化到数据库表中的一行,我添加了一个关于持久化最佳方法的想法的后续问题。 @leora:我怀疑你可以坚持 RRULE,但我已经有一段时间没有做任何 iCal 工作了。

以上是关于是否有存储和解析日历日期重复字符串的标准?的主要内容,如果未能解决你的问题,请参考以下文章

如何将日期字符串转换为日期或日历对象?

Calendar.aspx.cs Cell.Text 重复

不使用日历和日期实例显示星期几

Python / Pandas将字符串解析为日期和时间[重复]

不使用日历和日期实例显示星期几

如何验证“日期和时间”字符串是否只有时间?