【问题标题】:FullCalendar GMT +0200 on datesFullCalendar GMT +0200 日期
【发布时间】:2013-07-11 05:25:24
【问题描述】:

我在完整日历中的日期遇到了一些问题。

$("#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 设置,但没有帮助。也许我没有正确使用它。

【问题讨论】:

    标签: javascript jquery date fullcalendar


    【解决方案1】:

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

    Date 的行为是它在内部跟踪 UTC 时间,但无论何时显示它,都会使用本地计算机的时区显示该值。没有任何直接的方法可以禁用此行为——这就是 JavaScript 日期的工作方式。您可以查看this site 了解有关 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 不存在。

    【讨论】:

    • 感谢您的帮助! toUTCString 将日期 {Wed Jul 03 2013 16:50:00 GMT+0200} 转换为日期 {Wed Jul 03 2013 14:50:00}。但我需要这个日期 {Wed Jul 03 2013 16:50:00},有没有它的功能?
    • 那实际上是一个不同的时刻。 FullCalendar 经过校准以显示其运行所在时区的日历。当您在日历上看到 16:50 时,即为当地时间 16:50。 AFAIK,没有办法告诉它将日历呈现为 UTC 或任何其他时区。
    猜你喜欢
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 2012-03-11
    • 2015-01-08
    • 1970-01-01
    相关资源
    最近更新 更多