在FullCalendar上启用时区

时间:2016-10-09 10:17:25

标签: jquery 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端访问时区?

2 个答案:

答案 0 :(得分:5)

您需要将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

  3. 然后您可以使用event.start.format()获取日期时间。检查this fiddle是否有演示。

答案 1 :(得分:1)

想加我的两分钱。 我遇到了类似的问题,但是使用时它可以满足我的需求:

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

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