4

我正在使用 fullcalendar 插件,如果有人能帮帮我,我将不胜感激。

我通过 PHP URL 获取 json 事件。像这样的东西:

$('#calendar').fullCalendar({ events: "/myfeed.php" });

所以在我返回事件的 php 页面中,我得到了 3 个 GET 参数:

  • '_'
  • '开始'
  • '结尾'

start 和 end 参数,以 UNIX 时间戳表示日期。到目前为止一切顺利,发生的问题是,如果我更改操作系统上的时区。还可以更改这些参数 start 和 end,用于日历中同一天的相同查询。最奇怪的是它只发生在 Mozilla Firefox 中。在谷歌浏览器中,不会出现此问题。

例如

我已经设置了我的时区((UTC-04:00)圣地亚哥)我指的是议程上的 09.09.2012,萤火虫告诉我这些参数正在发送到我的 php 页面

  • _ 1347245953581
  • 结束 1347246000
  • 开始 1347159600

但是,如果我将时区从我的操作系统更改为 ((UTC-03: 00) Buenos Aires) 在 09.09.2012 的议程上进行咨询,那么现在发送到 PHP 页面的其他参数。

  • _ 1347246338047
  • 结束 1347332400
  • 开始 1347246000

因为是同一天,所以发送其他开始和结束参数以检查事件。

4

1 回答 1

0

fullcalendar 上有一个 ignoreTimezone 选项可能会有所帮助。我不确定它是否会影响传递给提要的开始/结束时间。

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

另一种选择是将传递的时间戳转换为 Date 对象,然后从 Date 对象中获取本地数据,然后在查询中使用它。

在 JavaScript 中将 Unix 时间戳转换为时间

我知道这不是确切的答案,但它可能会对您有所帮助。

这是一段 PHP 代码示例,用于将传递的时间戳转换为本地格式化日期:

$startts = $_REQUEST["start"]; // original timestamp

$startdt = new DateTime('now', new DateTimeZone('Europe/Oslo') ); // setup a local datetime
$startdt->setTimestamp($startts); // Set the date based on timestamp

echo $startdt->format('Y-m-d H:i:s'); // Output local date and time
于 2013-08-01T12:11:37.687 回答