Проблема с часовым поясом календаря Google

#jquery #json #date #datepicker #google-calendar-api

#jquery #json #Дата #выбор даты #google-calendar-api

Вопрос:

Я интегрирую API календаря Google с 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 не указаны в местном часовом поясе. Я видел, что могу добавить ctz (пользовательский часовой пояс) к своему вызову JSON, но я не могу найти никакой информации об этом. Я знаю, что это не смещение часового пояса.

Моя проблема: Internet Explorer не может получить даты календаря Google. Как я могу это исправить?

Комментарии:

1. Word Maths In Title = глупый заголовок

Ответ №1:

Хммм … отказаться от поддержки IE? к черту хромых пользователей! Я знаю, что это ужасный ответ, но я бы все равно проголосовал за него, если увижу его…

На серьезной ноте, разве вы не можете открыть исключение для ie и учесть математику?

Ответ №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:

Можете ли вы получить идентификатор часового пояса из этого календаря Google? Если да, то вы готовы к работе. Вы можете преобразовать его.