我有一个重复的日历计划,可以说每个星期一,星期三和星期五20:00H和每个星期日15:00H。请注意,我需要采用荷兰格式的24小时制。
现在,我想以以下方式仅显示前三个即将开始的日期,日期和时间:
例如,当星期一是20:00H之前的一个月的10号:
显示下一个即将到来的日期+日期,即星期一10日,20:00H。
显示那里的日期,之后是星期三12月20:00H。
并显示那里的日期,之后是星期五14th,20:00H。
10月10日(星期一)20:00H之后,一切都进一步移动:
显示下一个即将到来的日期和日期,即星期三12月20:00H。
显示那里的日期,之后是星期五14th,20:00H。
并显示那里的日期,之后是星期日16H,15:00H。
我必须能够在给定的结果周围包装一些文本,因此最好在自定义文本中使用三个变量,例如nextdate_1,nextdate_2和nextdate_3。
我希望有人可以在这里帮助我。
莫里斯
最佳答案
如果所有事件定义都作为JavaScript对象加载到一起
要求每个人计算接下来的三遍,
将它们添加到单个数组中
对该数组进行排序,然后
将前三个分配给您的变量。
这是一个开始。请注意,为简洁起见,它使用jQuery的$.each
。
var now = new Date(),
times = [],
nextThree;
$.each(events, function (index, event) {
var i, time = now;
for (i = 0; i < 3; i++) {
time = event.calculateNextAfter(time);
times.push(time);
}
});
times.sort();
nextThree = times.slice(0, 3);
更新:要对事件本身进行建模,取决于事件的复杂程度。第一个障碍是,每个事件都可以同时发生在星期几的任意组合上。假设您有两个事件,这似乎与您的描述相符。这可以像一个包含时间的对象一样简单,该对象包含一个以整数表示的时间和一个星期几的布尔值数组。
event1 = {
time: 2000,
days: [false, true, false, true, false, true, false]
}
event2 = {
time: 1500,
days: [true, false, false, false, false, false, false]
}
如果您阅读了JavaScript中的面向对象程序设计,则添加行为将变得更加复杂。不幸的是,我们远远超出了标准的SO问题,即“我如何进行这项工作?”