有没有一种标准来存储和解析日历日期重复的字符串?

7

我正在尝试将循环事件信息存储到数据库中。我想要将记录器存储到一个带有以下字段的数据库表中。

  • 开始日期 - 日期时间
  • 结束日期 - 日期时间
  • 重复模式 - 字符串

我想知道是否已经有一些标准格式来存储 RecurrencePattern,并且是否有相应的库来解析这个字符串 recurrenPattern 和一个开始 / 结束日期并转换为一组日期。我看到 JavaScript 中有 这个,所以可能会有一个移植到 C# 或类似语言的版本?

要将事件序列化到数据库中,我真的需要为每个事件创建一个新的 iCalendar 并序列化日历吗?是否有一种方法可以使用该库将事件本身简单地序列化到数据库中?

关于 Jon Skeet 的答案更新的问题:

根据 Jon Skeet 的建议,我开始看 DDay.iCal,它看起来非常不错。我的一个后续问题是,在示例中它似乎只一次从磁盘读取完整的 iCal(ics)。在我的情况下,我只是独立地将事件存储在数据库表中。使用此库,最佳方式是:

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

?


虽然与您的问题无关,但是在日历中表示循环的一个好模型可以在此处找到(pdf)。 - Jordão
你也可以存储一个 cron 字符串,它代表了事件的重复发生。 - Neil McGuigan
1个回答

8

有一个叫做DDay.iCal的库。我没有用过它,但是在寻找iCalendar和C#的时候快速搜索到了它...(iCalendar或RFC 5545是JavaScript格式的来源.)

根据我在其他平台的经验,重复事件很快就会变得非常复杂。如果你能从一开始就限定范围,我认为你成功的机会会更大。


谢谢Jon,这个库看起来非常有用。我添加了一个后续问题,关于最佳持久化方式的想法,因为我正在将每个事件持久化到DB表中的一行。 - leora
1
@leora:我猜你只需要持久化RRULE,但是我已经有一段时间没有做过任何iCal相关的工作了。 - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接