2

我在完整日历中的日期遇到了一些麻烦。

$("#calendar").fullCalendar(
    //...
    eventDrop:
        function(event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view)
        {
            console.log(event.start); // start is a date
        }
);

拖放后,我可以在控制台中看到:

Date {Wed Jul 03 2013 16:50:00 GMT+0200}

我希望 fullcalendar 将 UTC 值显示为 GMT+0000。有没有办法做到这一点?

我尝试使用ignoreTimezone设置,但它没有帮助。也许我没有正确使用它。

4

1 回答 1

2

实际上,产生您所看到的偏移量的不是 FullCalendar。它只是 JavaScript 的Date对象。

的行为Date是它在内部跟踪 UTC 时间,但无论何时显示它,都会使用本地计算机的时区显示该值。没有任何直接的方法可以禁用此行为 - 这就是 JavaScript 日期的工作方式。您可以查看此站点以获取有关 JavaScript 日期的更多信息。

您可能需要考虑以 UTC 显式输出时间。例如:

console.log(event.start.toUTCString());

如果您尝试将日历上的项目视为已在 UTC 中,则这不是 FullCalendar 支持的行为。你可以尝试“伪造它”,使用这样的东西:

var dt = event.start;
var adjusted = new Date(dt.getTime() - (dt.getTimezoneOffset() * 60000));
console.log(adjusted.toUTCString());

但是您可能会在夏令时开始或结束于用户本地时区的过渡点周围发现有趣或奇怪的行为。避免这种情况的唯一方法是 FullCalendar 允许您将整个日历的时区设置为 UTC,而 AFAIK 并不存在。

于 2013-07-14T01:10:19.257 回答