moonrrule

A timezone-safe recurrence and scheduling engine for MoonBit

calendar
rrule
cron
timezone
scheduler
moon add lxz123411/moonrrule@0.1.0
Download zip
Author
Version
0.1.0
License
Apache-2.0
Last updated
14 hours ago
Downloads
3
README

#MoonRRule

MoonRRule 是一个使用 MoonBit 编写的时区安全日程与重复规则引擎。它面向日历、预约、提醒、课程排期和任务调度等场景,提供日期时间运算、RFC 5545 重复规则、Cron 表达式、时区转换与工作日历能力。

参赛材料:项目申报书

#项目状态

当前仓库处于黑客松开发阶段。所有公开 API、测试和示例均以 MoonBit 实现,目标支持 native、JavaScript 与 WebAssembly 后端。

#设计目标

  • 可预测:时间计算不依赖宿主系统隐式时区。
  • 可解释:解析错误携带字段和位置,生成结果可追踪来源。
  • 可测试:核心算法采用纯函数,覆盖闰年、月末和夏令时边界。
  • 可组合:RRULE、Cron、排除日期和工作日历使用统一时间模型。

#快速开始

moon check moon test moon run cmd/moonrrule -- rrule "FREQ=DAILY;COUNT=3" "2026-08-01T09:00:00Z"

#仓库结构

  • src/calendar:公历日期、时间、时间戳和持续时间。
  • src/timezone:固定偏移、区域规则与 DST 冲突策略。
  • src/rrule:RFC 5545 重复规则解析、校验与实例生成。
  • src/cron:Cron 表达式解析、匹配与后续执行时间计算。
  • src/schedule:重复集合、排除日期和工作日历。
  • src/ical:iCalendar 内容行、VEVENT 与折行规则的导入导出。
  • cmd/moonrrule:可运行的命令行示例。
  • docs:项目申报书、设计说明和兼容性记录。

#已实现能力

  • 公历日期、ISO 周、时间戳、持续时间和负时间戳转换。
  • 固定偏移及 Europe/Berlin、America/New_York 的确定性 DST 规则。
  • RRULE 的 SECONDLY 至 YEARLY 频率及常用 BY* 过滤器。
  • 五段/六段 Cron、范围、列表、步长、月份与星期名称。
  • RDATE、EXDATE、排除规则、工作日和节假日计算。
  • iCalendar VEVENT 解析、生成、文本转义、折行和展开。
  • 可运行 CLI、GitHub Actions 和跨月边界公历一致性测试。

#许可证

Apache-2.0。规范名称仅用于说明兼容目标;项目不复制第三方实现代码。