在FullCalendar上启用时区

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在FullCalendar上启用时区相关的知识,希望对你有一定的参考价值。

我正在重建一个我需要时区支持的现有项目。通过json-feed使事件变得很好。示例数据:

[{
    "id":"1",
    "title":"Titel",
    "start":"2016-10-08T12:00:00+02:00",
    "end":"2016-10-08T12:30:00+02:00",
}]

如您所见,该事件具有Timezone-Data。 (2016-10-08T12:00:00+02:00

我想使用eventDrop来更新事件,当用户拖放事件时,数据(eventId,start_time,end_time)被发送到php,后者更新数据库。

我的PHP脚本应该将收到的start_time和end_time转换为UTC并将其写入数据库。

问题是fullcalendar没有将事件的时区传递给我的PHP。我试过传递类似的东西:

event_start: moment(event.start).format("YYYY-MM-DD HH.mm:ssZZ"),

我得到的数据是这样的:

event_start: 2016-10-08 12.00:00+0000

我预计它将是这样的:

event_start: 2016-10-11 12.00:00+0200

使用时区信息,我可以轻松地将其转换为UTC。

如何在PHP端访问时区?

答案

你需要设置timezone属性,可能是'UTC'。所以,像:

$('#calendar').fullCalendar({
        events: [{
            "id":"1",
            "title":"Title",
            "start":"2016-10-08T12:00:00+02:00",
            "end":"2016-10-08T12:30:00+02:00"
        }],
        timezone: 'UTC'
    });

之后,当您检索事件时,您应该在每个事件的tzm: 120上看到start,并且应该能够在服务器端获取正确的时区。

我创建了this jsfiddle,其中包含一个用于检索事件的按钮,您可以在此处验证这一点。


好的,如果你想获得日期时间,你有两个选择:

  1. timezone酒店设置为您需要的当地酒店。例如,如果您使用的是00:00+02:00,则可以将时区设置为timezone: 'Europe/Belgrade'
  2. 只是不要设置timezone(保留默认值false

然后你可以用event.start.format()获取日期时间。查看this fiddle进行演示。

另一答案

想加我的两分钱。我有类似的问题,但在我使用时它符合我的需求:

timezone:"local" (I assume you could use "UTC" in your case)

format("yyyy-MM-dd'T'HH:mm:ssXXX").

以上是关于在FullCalendar上启用时区的主要内容,如果未能解决你的问题,请参考以下文章

fullcalendar-无法获取所选月份的月份和年份

windows进程启动设置时区限制

jQuery fullCalendar 在标题上显示未定义

启用 Proguard 后无法实例化片段

在 webview_flutter 中启用捏合和缩放,在哪里添加代码片段 [this.webView.getSettings().setBuiltInZoomControls(true);]

Jquery fullcalendar不显示事件