JQuery fullCalendar:日期/事件的问题 - 它渲染一个小时太晚了!

时间:2011-04-26 16:05:50

标签: jquery fullcalendar unix-timestamp

我有点奇怪,我刚刚在我的fullCalendar实现中发现了。

基本上,我在数据库“28/04/2011 09:00:00”(dmy)中有一个日期,我将其转换为Unix时间戳,结果为1303981200.0。

我已使用http://www.onlineconversion.com/unix_time.htm进行了检查,时间戳有效。

但是,当我将此JSON传递给fullCalendar时,它会在一小时后呈现该事件!

JSON是:

[{"id":"4a315750666d2f70675241544936762b632f514f51513d3d","title":"Blah blah blah","description":"","start":1303981200,"end":1303983000,"className":"A-16","allDay":false}]

莫名其妙

感谢。

3 个答案:

答案 0 :(得分:4)

嘿amit_g,我也使用php生成的时间戳遇到了这个问题。出现此问题的原因是时间戳不会“逐字地”包含时区,因此当使用带有Date()的javascript转换它时,会使用本地时区。

我通过在向FC提供事件时使用完整的ISO 8601日期格式而不是时间戳来解决这个问题。

$startTimestamp = 1303776000; //2011-04-26 at 12am
$startISO = date('c', $startTimestamp);
echo $startISO; //Outputs 2011-04-26T00:00:00+00:00

使用$ startTimestamp作为事件开始提供FC根据我的时区显示事件(由于DST导致时间为-4 EST),因为时间戳是12am,javascript Date()减去4小时,因此显示我的事件FC前一整天。现在使用ISO日期会在正确的时间显示我的所有事件。希望这有助于其他人!

答案 1 :(得分:1)

您可能必须尝试添加时区位置,因为您的服务器可能有不同的时间。

http://arshaw.com/fullcalendar/docs/event_data/ignoreTimezone/

答案 2 :(得分:1)

这个小时的差异很可能是由于夏令时。 Fullcalendar代码可能被设置为当前客户端的时间;您可能需要调整时区和夏令时差异。请参阅FullCalendar documentation中的时区陷阱。没有太大的帮助,但可能会指出你正确的方向。