我正在重建一个我需要时区支持的现有项目。通过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,其中包含一个用于检索事件的按钮,您可以在此处验证这一点。
好的,如果你想获得日期时间,你有两个选择:
timezone
酒店设置为您需要的当地酒店。例如,如果您使用的是00:00+02:00
,则可以将时区设置为timezone: 'Europe/Belgrade'
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").