日历插件全天事件结束过早且渲染不正确

TL;DR: 在使用“团队假期日历”用例时,如果团队成员在不同时区回复,日历会显示项目结束时间过早。

复现步骤:

  • 已安装日历插件。
  • 创建一个主题供团队用作“外出办公”或“假期”日历。按照示例将该日历嵌入到主题的首条帖子中。
  • 让团队成员以回复的形式添加他们的假期,例如:
    [date=2020-02-05 timezone="America/New_York"] → [date=2020-02-07 timezone="America/New_York"] 愉快的假期

预期行为:

  • 时区设置为 America/Los_Angeles 的用户在日历网格上应看到上述示例占用 2 月 5 日、6 日和 7 日全天,与事件创建者看到的一致。

实际行为:

  • 时区设置为 America/Los_Angeles 的用户在日历网格上会看到上述示例占用 2 月 4 日、5 日和 6 日全天,而事件创建者看到的是正确的 2 月 5 日、6 日和 7 日。

推测原因:

似乎当事件条目中未提供具体时间时,系统会假设开始时间为 00:00,并且假设结束时间也为该条目中指定时区的 00:00。因此,在上述洛杉矶时区用户的例子中,纽约的同事的 2 月 5 日至 7 日假期实际上是从洛杉矶时间 2 月 4 日 21:00 开始,并在洛杉矶时间 2 月 6 日 21:00(即纽约时间 2 月 7 日 00:00)结束

至少可以推断,如果未指定时间,系统应默认将提供日期的结束时间设为 23:59:59,而不是 00:00:00。

此外,对于未提供具体时间的活动,似乎应该无论时区如何都进行渲染,以确保它们始终与作者声明的内容一致,而不受查看者时区的影响。

1 个赞

嗨,Michael,

我最近对日历插件进行了一项更改,导致了这个问题。我们新增了两项站点设置,以帮助日历插件作为可行的“团队假期日历”运行。

全天事件的问题正如你所描述:不同时区的日期开始时间不同。为了解决这个问题,你可以设置这两项参数(我认为 06:00 和 18:00 效果不错),这样任何未指定时间的日期都将从 6:00 开始,到 18:00 结束。

请尝试一下,并告诉我效果如何。

6 个赞

不错。既然这是站点设置,这些条目指的是哪个时区?

1 个赞

时区仍为发帖用户的时区。

4 个赞

现在看起来很棒。谢谢!

1 个赞