2011-04-26 141 views
5

我在我的fullCalendar实现中发现了一些奇怪的东西。JQuery fullCalendar:带日期/事件的问题 - 它太晚了!

基本上,我在数据库“28/04/2011 09:00:00”(dmy)中有一个日期,我将它转换为Unix Timestamp,结果为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}] 

莫名其妙

感谢。

回答

4

嘿amit_g,我也遇到了这个使用php生成的时间戳。出现这个问题的原因是时间戳不'字面上'包含时区,所以当它由JavaScript转换为Date()时,FC将使用本地时区。

我通过简单地使用完整的ISO 8601日期格式来解决此问题,而不是提供事件给FC时的时间戳。

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

供应FC只需$ startTimestamp作为事件开始根据我的时区(美国东部时间-4在由于DST的时间),因为时间戳是上午12点显示的情况下,JavaScript的日期()减去4个小时,因此在FC上提前一整天显示我的活动。现在使用ISO日期可以在正确的时间显示我所有的活动。希望这可以帮助别人!

+0

谢谢@ user725755,这工作得很好!路要走。谢谢。 – Oxonhammer 2011-04-27 08:03:05

+1

对于c#使用类似这样的DateTime.Now.ToString(“o”) – Mike 2013-07-02 19:25:49

1

很可能这个时候discrepency是由于日光节约时间。 Fullcalendar代码可能被设置为当前客户的时间;您可能需要根据时区和夏时制差异进行调整。见时区陷阱FullCalendar documentation。不是太有帮助,但可能会指出你在正确的方向。

+0

谢谢。它指出我需要的确切方向。 – 2014-10-27 18:57:59

+0

我试图通过Asp.net Webforms提供事件详细信息,并且转换DateTime.ToLocalDate()为我做了诀窍。 – 2014-10-27 18:59:12