问题标签 [recurring-events]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1047 浏览

javascript - 如何在 node.js 和 mysql 中使用 fullCalendar 执行重复事件

我正在创建一个基于 fullcalendar 插件的日程安排网站。

我们需要创建重复事件。活动将每周或每天重复。

以下是我们试图实现的事件的示例 事件名称:每周回顾会议 日期:星期一 时间:09:00 到 11:00 重复:每周(每个星期一同一时间,持续 6 个月)

我怎样才能做到这一点?我们尝试了一些选项,但似乎不起作用。

任何人都可以帮助逻辑吗?

0 投票
0 回答
373 浏览

javascript - 是否有任何 JavaScript 库支持 ISO8601 循环间隔?

我想发布具有重复间隔的数据(例如,“从日期开始的每个第二个星期二......-..-..”),主要供网络开发人员使用。我曾假设使用 ISO 8601 标准会使数据易于使用。

但是 - 实际上是否有任何库可以解析具有重复间隔的 ISO 8601 日期?例如:R/2015-01-14/P2W

Javascript 的原生Date对象失败:

Moment.js失败:

那么,有没有R/.../PxW我没有找到的重复间隔(特别是上面的格式)的支持?

0 投票
1 回答
7030 浏览

sql - 重复性事件的数据库设计与异常

我正在构建一个需要存储/管理不同类型事件的系统。为简单起见,我将专注于设计日历(我正在构建一些稍微不同的东西,但日历是一个很好的类比,而且很容易推理)。我想听听可能的数据库/模式设计理念。

问题描述

我有一个包含不同类型事件的日历(为简单起见,假设只有一种类型的事件:任务)。用户可以为特定日期添加新事件、编辑(更改一些细节,如标题或移动到另一个日期)或删除。可以有一次性事件和重复事件(具有不同类型的重复:每 X 天、每月第 15 天、每周星期一;有点像简单的 cron)。当用户移动重复事件时,该事件的所有其他实例都以相同的方式移动(例如:+3 天)。重要部分:重复事件可以有例外。因此,例如,假设我有一个周期性事件 A,它每 7 天重复一次。但是我想将它的日期更改为下周,所以它被分配到星期五而不是星期二,之后它仍然会在星期二发生。这个“例外”

此外,每个重复事件都可以包含仅与 1 个特定实例相关的附加信息,例如:我有相同的重复事件 A 每 7 天重复一次,我想为本周实例添加一个注释,上面写着“X”,并且我想为下个月的事件 A 添加另一个注释,上面写着“Y” - 这些字段仅对该单个实例可见。

想法

具有定期、一次性事件的系统非常简单,所以我不会讨论这个,只关注重复事件。

1.一种可能的解决方案是类似于 OOP 的解决方案:我可以有一个Event“类”,其中包含诸如start_date, end_date(can be null)、recurrence_type(类似于 enum 的可能值为EVERY_X_DAYS, DAY_OF_WEEK, DAY_OF_MONTH) 和recurrence_value(say 7) 的字段。当用户添加新的重复事件时,我只是Event在数据库中创建这样的。当用户想要更改此事件的 1 次发生时,我将新条目添加到从不同日期MovedEvent“继承”的类型/类的数据库中,并具有指向它的(或,如果你愿意的话)的附加字段相关。但与此同时,我需要跟踪所有Eventrelated_toIDUUIDEventMovedEvents(否则我会在同一周显示 2 个事件),所以我需要一个指向所有smoved_events的s 数组。 缺点:每次我想显示日历时,我都需要从中获取并选择所有事件,如果我有很多移动的事件,这不是最佳选择。IDMovedEventEventmoved_events

2.另一个想法是将每个事件存储为单独的记录。IMO 这是一个糟糕的主意,但我只是提到它是因为它是一种可能性。缺点:每次我想编辑主要事件(例如:我想将事件从“每 7 天”更改为“每 9 天”)时,我都需要更改事件的每一次发生。不过,“例外”(更改单个实例)更容易。

SQL/NoSQL?比例细节

我在我的项目中使用 PostgreSQL,但我对 NoSQL 数据库有基本的了解,如果它们更适合此类问题,我可以使用它。

规模:假设我有 5k 个用户,每个用户平均每周有 150 个事件,其中 40% 可能是“例外”。因此,我想设计这个系统是高效的。

类似问题和其他资源

我刚刚开始阅读 Martin Fowler 的“日历的重复事件”(http://martinfowler.com/apsupp/recurring.pdf),但我不确定它是否适用于我的问题,如果适用,如何设计数据库根据本文档的架构(欢迎提出建议)。

有类似的问题,但我没有看到任何提及“异常”(更改 1 个事件实例而不影响其他事件),但也许有人会发现这些链接很有用:

抱歉问了一个很长的问题,我想很好地描述这个问题。然而,我觉得这很混乱,所以如果你有其他问题,我会很乐意提供更多细节。同样,我想听听可能的数据库/模式设计理念以及任何其他建议。谢谢!

0 投票
2 回答
756 浏览

vba - Outlook VBA:将重复模式中的每个约会日期与电子表格数据进行比较

我想找到一种方法,使用循环将循环模式中的每个定期约会日期与电子表格中的数据进行比较,从而创建不规则的循环模式。这怎么可能实现?提前致谢。

0 投票
1 回答
74 浏览

recurring-events - 每个星期一、星期二和星期五的 sheql 表达式

我只是决定使用此链接中的符号来表示重复事件。

但我无法弄清楚一周中每个星期一、星期二和星期五的 sheql 表达式。我们可以用一个表达式来表示它吗?

0 投票
1 回答
312 浏览

ruby-on-rails - 使用 ice_cube gem 创建重复事件

我正在尝试使用 ice_cube 和 recurring_select gems 创建重复事件。

这是我的 _form.html.erb 代码:

在我的控制器中,我有(除其他外):

如您所见,我想为一周中的每一天创建相同的事件,但实际上,如果我提交此表单,我的 :day 列仍然为空。

你能提供一些反馈吗?我不知道有什么问题

0 投票
2 回答
1493 浏览

outlook - 如何以编程方式使用 ical 从重复集中删除单个事件?

我在 10,11 日创建了一个重复事件,请参见下文,我想删除第 10 个事件,所以我使用了方法:取消,但由于 UID 相同,两条记录都将被删除。如何只删除一条记录,我应该使用 UID 等任何其他值吗?

取消事件代码:

0 投票
2 回答
5245 浏览

java - 使用 Java 时间(java.time 或任何时间库)的重复事件

我正在使用非常简单的重复模式(每 x 天或每周)对 Java 中的重复事件进行建模。给定一个带有 的事件对象startDateTimeendDateTime以及以天为单位的重复周期(其类型Period来自 java.time 包),我想找出事件是否在给定日期发生(考虑 DST)。

关于“考虑夏令时”的一些背景(在评论中提出要求后):

  • 这些事件用于安排员工的工作班次。
  • 员工 24/7 轮班工作(通常为 8 小时)
  • 夜班从 0:00 开始,到 8:00 结束。因此,在 DST 更改时,班次可以是 7 小时或 9 小时。在任何情况下都不应该有差距。

我目前正在以一种不太高效的方式执行此操作:

示例 对于以下事件

调用includes产生以下结果:

什么是执行此操作的高效方法(如前所述,考虑到 DST)?我还想在日历上显示事件。

更新可能的重复使用我上面使用的完全相同的算法。有没有更快的方法可以在不遍历所有日期的情况下做到这一点?

0 投票
1 回答
145 浏览

date - 如何为特定本地日期的所有时区用户管理重复事件?

我正在尝试为 iOS 开发一个依赖于调度程序和日历的事件应用程序。它使用在线数据库(解析数据库)来存储事件和用户详细信息。

细节:

  • 一个用户为特定日期创建事件(即从特定日期开始连续 5 周的每个星期一)并邀请其他用户参加事件。

  • 事件将仅在所有用户的定义日期激活,即如果事件日是星期一,则事件仅在所有用户的星期一(当地时间)的星期一激活。

问题:如何根据当地时间检查用户的事件是否处于活动状态?desc :如果事件日是星期五 (1/1/2016),则事件仅在星期五 (1/1/2016) 对所有用户有效,即用户本地时间是星期五 (1/1/2016),则事件对此有效用户。所有其他用户都一样。

如何在服务器数据库上维护它并通知用户今天的事件是活动的?我正在使用解析数据库,所有这些逻辑都将在 Parse 上使用 Cloud Code 实现。

编辑:我尝试根据 UTC 时区激活事件。对于上面的示例,事件在 1/1/2016 00:00:00.000Z 激活并在 2/1/2016 00:00:00.000Z 关闭。这适用于 UTC+00 的用户,但对于 UTC+5:30 的用户,事件在 2016 年 1 月 1 日 05:30:00 激活并在 2016 年 2 月 1 日 5:30:00 关闭。但事件应仅在 2016 年 1 月 1 日 00:00:00 到 2016 年 2 月 1 日 00:00:00 之间有效。对于具有不同时区的所有用户,同样的问题。

0 投票
2 回答
1060 浏览

hangfire - Hangfire - 它如何处理本月的最后几天?

我有一个用户界面,用户可以在其中选择他们希望在每个月的哪一天收到电子邮件。如果他们选择 31 号会发生什么?Hangfire 如何处理只有 30 天或 2 月的日子?

谢谢!