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

**URL:** https://meta.discourse.org/t/calendar-plugin-all-day-events-end-too-soon-render-incorrectly/140096
**Category:** Bug
**Created:** [2020年一月29日 18:40 UTC](https://meta.discourse.org/t/calendar-plugin-all-day-events-end-too-soon-render-incorrectly/140096 "2020-01-29T18:40:48Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![downey](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/downey/32/166878_2.png) [@downey](https://meta.discourse.org/u/downey)
#### Post date: [2020年一月29日 18:40 UTC](https://meta.discourse.org/t/calendar-plugin-all-day-events-end-too-soon-render-incorrectly/140096/1 "2020-01-29T18:40:48Z")

</div>

**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。

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

---

<div class="post-metadata">

### Author: ![markvanlan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/markvanlan/32/160087_2.png) [@markvanlan](https://meta.discourse.org/u/markvanlan)
#### Post date: [2020年一月29日 20:13 UTC](https://meta.discourse.org/t/calendar-plugin-all-day-events-end-too-soon-render-incorrectly/140096/2 "2020-01-29T20:13:48Z")

</div>

嗨，Michael，

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

 ![Screenshot from 2020-01-29 14-09-20@2x](https://global.discourse-cdn.com/meta/original/3X/3/e/3e7b551c01aad4247526ac45047459492d44b177.png)

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

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

---

<div class="post-metadata">

### Author: ![downey](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/downey/32/166878_2.png) [@downey](https://meta.discourse.org/u/downey)
#### Post date: [2020年一月29日 21:47 UTC](https://meta.discourse.org/t/calendar-plugin-all-day-events-end-too-soon-render-incorrectly/140096/3 "2020-01-29T21:47:12Z")

</div>

> [@markvanlan](#):
>
> 新增了两项站点设置，有助于使日历插件作为可行的“团队假期日历”运行。

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

---

<div class="post-metadata">

### Author: ![markvanlan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/markvanlan/32/160087_2.png) [@markvanlan](https://meta.discourse.org/u/markvanlan)
#### Post date: [2020年一月29日 21:49 UTC](https://meta.discourse.org/t/calendar-plugin-all-day-events-end-too-soon-render-incorrectly/140096/4 "2020-01-29T21:49:26Z")

</div>

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

---

<div class="post-metadata">

### Author: ![downey](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/downey/32/166878_2.png) [@downey](https://meta.discourse.org/u/downey)
#### Post date: [2020年一月29日 22:05 UTC](https://meta.discourse.org/t/calendar-plugin-all-day-events-end-too-soon-render-incorrectly/140096/5 "2020-01-29T22:05:15Z")

</div>

现在看起来很棒。谢谢！

---

<div class="post-metadata">

### Author: ![markvanlan](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/markvanlan/32/160087_2.png) [@markvanlan](https://meta.discourse.org/u/markvanlan)
#### Post date: [2020年一月29日 22:19 UTC](https://meta.discourse.org/t/calendar-plugin-all-day-events-end-too-soon-render-incorrectly/140096/6 "2020-01-29T22:19:51Z")

</div>


