2

我有一个重复的日历计划,比如说每周一、周三和周五 20:00H 和每个周日 15:00H。请注意,我需要荷兰语格式的 24 小时时间格式。

现在我想通过以下方式仅显示即将到来的三天+日期+时间:

例如,当它是20:00H之前的一个月的 10 号星期一时:

  • 显示下一个即将到来的日期 + 日期,即Monday 10th, 20:00H
  • 在那里显示日期,之后是12 日星期三 20:00H
  • 并在那里显示日期,之后是Friday 14th, 20:00H

在 10 号星期一 20:00H 之后,一切都更进一步:

  • 显示下一个即将到来的日期 + 日期,即周三 12 日 20:00H
  • 显示日期,之后是Friday 14th, 20:00H
  • 并在那里显示日期,之后是Sunday 16th, 15:00H

我必须能够在给定的结果周围包装一些文本,所以最好有三个变量,例如我可以在自定义文本中使用的 nextdate_1、nextdate_2 和 nextdate_3。

我希望有人可以在这里帮助我。

莫里斯

4

1 回答 1

0

如果您将所有事件定义作为 JavaScript 对象一起加载

  1. 要求每个人计算接下来的三次,
  2. 将它们添加到单个数组中,
  3. 对该数组进行排序,然后
  4. 将前三个分配给您的变量。

这是一个起点。请注意,$.each为简洁起见,它使用 jQuery。

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 问题,即“我该如何完成这项工作?”

于 2013-05-26T10:24:23.667 回答