我正在重建一个我需要时区支持的现有项目。通过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端访问时区?
答案 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,其中包含一个用于检索事件的按钮以及您可以在哪里验证这一事件。
好的,如果你想获得日期时间,你有两个选择:
将timezone
属性设置为您需要的本地属性。例如,如果您使用00:00+02:00
,则可以将时区设置为timezone: 'Europe/Belgrade'
根本不要设置timezone
(将其保留为默认false
)
然后您可以使用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").