我有一个程序,用户可以设置一个事件,包括开始日期、结束日期和事件应重复的重复周期,每周、每月按日期、每月按工作日和每年重复。用户创建事件后,它会保存在数据库中,并且该事件会显示在我的程序主页上的日历中。
到目前为止,我已经能够设计出每周重复日期、每月按日期重复日期和每年重复日期的算法,但不能设计每月按工作日重复日期的算法。我所说的“每月按工作日”是指在开始日期和结束日期占据的时间段内每月每个同一工作日重复一次的事件。
例如,在3月1日到11月1日之间每个月的第一个星期一重复的事件,3月1日是3月的第一个星期一,所以我想生成一个日期是4月的第一个星期一,即4月5日, 3 月至 11 月之间的每个月,依此类推。
下面的代码片段是我按日期每月重复日期的函数,适用于在开始日期和结束日期之间的任何一个月的每 15 日重复一次的事件。
function repeatEventMonthly(jsonArray, num){
//First I get the start date and end date as strings on a JSON, I separate
//them by the "/" and then use the individual parts to construct two Date Objects
var split = jsonArray[num].Fecha.split("/");
var split2 = jsonArray[num].fechaFin.split("/");
var dd = split[1];
var mm = split[0];
var yy = split[2];
var dd2 = split2[1];
var mm2 = split2[0];
var yy2 = split2[2];
var starDate = new …Run Code Online (Sandbox Code Playgroud)