【问题标题】:Google Calendar timezone issue谷歌日历时区问题
【发布时间】:2011-12-01 21:15:15
【问题描述】:

我正在将 Google 日历 API 与 jQuery DatePicker 集成。

像往常一样,我的代码在除 Internet Explorer 之外的所有浏览器上都能正常运行。

我目前有这个代码:

$.getJSON("http://www.google.com/calendar/feeds/developer-calendar@google.com/public/full?alt=json", function(data, textStatus){
    $.each(data.feed.entry, function(index, event){
        if(event.gd$when) {
            var event_date = $.datepicker.formatDate('yymmdd', new Date(event.gd$when[0].startTime));
            if (!(calendar_data.hasOwnProperty(event_date))) {
                calendar_data[event_date] = new Array();
            }
            event.gd$when[0].formatedTime = $.datepicker.formatDate('MM d, yy', new Date(event.gd$when[0].startTime));
            calendar_data[event_date].push(event);
        }
    });
    showEvent(new Date());

    $('#calendar-datepicker').datepicker("refresh");
});

它在 IE 中不起作用,因为 IE 使用客户端的时区来导入日期。

Google 日历中的日期不在当地时区。我已经看到我可以在我的 JSON 调用中添加一个ctz(自定义时区),但我找不到任何关于它的信息。这不是时区偏移,I know that much

我的问题:Internet Explorer 无法获取 Google 日历日期。我该如何解决这个问题?

【问题讨论】:

  • Word + Maths + In + Title = 傻标题

标签: jquery json date datepicker google-calendar-api


【解决方案1】:

你能设法得到那些谷歌日历的 timezoneID 吗?如果是,那么您就可以出发了。你可以转换它。

【讨论】:

    【解决方案2】:

    new Date(event.gd$when[0].startTime) 返回 NAN,基于浏览器

    所以改变

    var event_date = $.datepicker.formatDate('yymmdd', new Date(event.gd$when[0].startTime));
    

    var event_date = $.datepicker.formatDate('yy-mm-dd', Date.parse(event.gd$when[0].startTime));
    

    【讨论】:

      【解决方案3】:

      嗯...放弃 IE 支持?拧跛用户! 我知道这是一个糟糕的答案,但如果我看到它,我仍然会投票......

      严肃地说,你不能为 ie 打开一个例外并计算数学吗?

      【讨论】: