【问题标题】:Why does FullCalendar renders this event as single day event?为什么 FullCalendar 将此事件呈现为单日事件?
【发布时间】:2015-04-19 16:24:43
【问题描述】:

这是事件的 JSON 表示:

    "id" : 253,
    "title" : "16-17",
    "allDay" : true,
    "start" : "2015-04-16T00:00:00.000+03:00",
    "end" : "2015-04-17T00:30:00.000+03:00"

FullCalendar 将其呈现为单日事件。我怀疑问题出在时区设置中,但无法理解到底是什么。

我尝试使用:ignoreTimezone: false,但没有帮助。

我想上面的 JSON 会渲染 16 日到 17 日的全天活动(两天活动)。

谢谢。

更新: 我正在使用 FullCalendar v2.3.1,并且有一个指向 jsfiddle 的链接可以重现此问题:http://jsfiddle.net/anatoly314/m8d68v1b/4/

【问题讨论】:

  • 完整日历配置的其余部分是什么样的?我将这些数据放入一个完整的日历小提琴示例中,并得到了您所说的预期行为:jsfiddle.net/wzwm8Lqz
  • @SMcCrohan,我已经在家了,明天将检查并发布完整配置。谢谢!
  • @SMcCrohan,实际上我查看了您的代码并注意到您使用的是旧版本的 FullCalendar 1.5.4,在新版本 2.3.1 中我将能够重现此问题.有一行jsfiddle.net/anatoly314/m8d68v1b/4

标签: javascript fullcalendar


【解决方案1】:

当前版本的 FullCalendar 中的任何自动化测试似乎都没有涵盖开始和结束日期包括时间并且设置了 allDay 选项的情况。

文档表明结束日期是唯一的。我强烈怀疑正在发生的事情是allDay : true,fullCalendar 正在剥离开始日期和结束日期的时间并将它们视为T00:00:00。此时,您的事件的开始时间为2015-04-16T00:00:00.000,结束时间为2015-04-17T00:00:00.000,这与您看到的行为相匹配。实际上,如果您从数据中省略时间并给出它:

start: '2015-04-16',
end: '2015-04-17'

它产生一个为期一天的事件。

如果您希望您的活动跨越两天,您需要将结束时间“向上取整”到第二天的开始时间。

【讨论】:

  • 其实说明书上写的,需要仔细阅读。 It is the moment immediately after the event has ended. For example, if the last full day of an event is Thursday, the exclusive end of the event will be 00:00:00 on Friday! 让我感到困惑的是,在旧版本中它的行为不同,我从旧版本迁移到新版本。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
相关资源
最近更新 更多