在FullCalendar上启用时区

问题描述 投票:1回答:2

我正在重建一个我需要时区支持的现有项目。通过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端访问时区?

jquery fullcalendar
2个回答
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

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


1
投票

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

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

format("yyyy-MM-dd'T'HH:mm:ssXXX").
© www.soinside.com 2019 - 2024. All rights reserved.