对于依赖于最后可能较晚完成时间的事件,是否有类似于 iCalendar RRULE 的标准?

问题描述

我正在研究 https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.5https://datatracker.ietf.org/doc/html/rfc7529#section-4.1 ,我认为这形成了一个很好的标准,可以为日历事件生成一组静态时间戳。

为了更好地解释我的问题,我想从一个例子开始。

FREQ=DAILY;INTERVAL=2

这将从提供​​的 DTSTART 开始,并且该事件将在该点之后每隔一天重复一次。同理

FREQ=DAILY;INTERVAL=2;BYHOUR=10;BYMINUTE=30;BYSECOND=0

将确保这些重复发生在每隔一天的 10:30。

不过,我觉得还有一个概念,我们不是在调度事件,而是在调度任务。如果某项任务延迟完成,有时我们不希望该任务在某个静态调度的时间再次执行,而是下次应该取决于上次完成时间。

如果我们对重复频率感到满意,那么计算下一次任务到期的时间就很简单了,

lastCompletionTime + frequency

其中 lastCompletionTime 是某个时间戳对象,频率表示持续时间。

一个具体的例子,如果我们有一个 1 小时的频率:

currentDueTime: 2021-07-23T07:00:00.000+10:00
lastCompletionTime: 2021-07-23T07:30:00.000+10:00 // so,this has been completed late
newDueTime: 2021-07-23T08:30:00.000+10:00

但是,让我们回到我们的频率为两天的示例。这是我希望发生的事情的示例。

currentDueTime: 2021-07-23T10:30:00.000+10:00
lastCompletionTime: 2021-07-24T15:00:00.000+10:00 // this has been completed late,over a day after it was due
newDueTime: 2021-07-26T10:30:00.000+10:00 // Now due two days after completion,but,at 10:00,so this is not calculated just by adding a 48 hour frequency

这让我觉得能够使用 RRULE 定义一组无法提前知道的时间戳会很好。或者,假设所有未来的完成都在适当的时间发生,则可以提前生成一个集合。

一个有用的功能是限制重复的能力。例如,我可能希望活动每 40 分钟(在每个 lastCompletionTime 之后)到期,但只能在每个工作日的 09:00 和 17:00 之间到期。在此示例中,接近 17:00 的 lastCompletionTime 应在第二天的 09:00 生成新的DueTime。

问题是,是否有一个标准可以在我缺少的某个地方扩展 RRULE 概念,或者以这种方式生成时间戳的类似标准?更好的是,有什么地方可以实现吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...