我有一个与基于jQuery的构建的应用程序fullCalendar http://arshaw.com/fullcalendar/fullCalendar夏令时错误
我的日历事件是由一个Ajax调用输出JSON加载,它配置有周一的第一天一周,默认视图是星期。
它一直正常工作,但我注意到,如果我前进到第13周(从3月26日开始),事件无法正确加载。我马上就想到了这一点,这与夏季时间变化发生在3月25日的事情有关。
当我使用点击next/prev按钮时,日历会使用自动生成的开始和结束时间进行ajax调用,我的php脚本在后台将开始日期计算为周数,并调用我的所有事件那周的数据库。
例如在下面的变量一周12格兰传递:
开始= 1332115200 &末= 1332716400 & _ = 1331237729591
PHP脚本:
$week_no = date('W', $_GET['start']);
哪按照第12周计算。
然而在接下来的一周传递的变量有:?
开始= 1332716400 &末= 1333321200 & _ = 1331238038820
$week_no = date('W',$_GET['start']); == 12 // same as last week
NN进一步检查
echo date("C",1332115200); // == 2012-03-19T00:00:00+00:00
echo date("C",1332716400); //2012-03-25T23:00:00+00:00 (1 hour short of being in week 13)
所以很明显日光改变导致问题。
我的问题是,这是一个fullcalander或我的PHP逻辑的问题?
什么时区是a)您的计算机b)服务器/ php设置为?如果有差异,那肯定会造成错误。不一定是这个,但将来会有错误/问题。由于fullCalendar取决于客户端的时钟,因此您无法做太多的工作。 – Niko 2012-03-08 22:26:51
哦真的吗?这很糟糕。应该有可能编写可以随时在任何时区工作的代码。我有点认为这是一个unix时间戳点.. – 2012-03-09 01:27:34
是的,但你需要做的权利。 fullCalendar不会传递UTC时间戳,而是本地化的。这就是搞砸了。 – Niko 2012-03-09 10:21:00