【问题标题】:Google Calendar not displaying correct time谷歌日历没有显示正确的时间
【发布时间】:2012-01-29 14:24:35
【问题描述】:

我有一个用于学校网站的 Google 日历,我正在使用 Google API 来显示接下来的五个日历活动。一个问题是时间显示在 24 小时制而不是上午和下午,但这不是我的主要问题。主要问题是,虽然活动在网站上显示正确的时间,但当您单击活动在日历活动视图中查看它时,它只会显示格林威治标准时间而不是东部时间。登录 Google 帐户后,事件会显示正确的时区,但当您在未登录的情况下查看时区时,它会默认为 GMT。

我已经尝试将其更改为另一个时区并将其更改回来,但没有修复它。

我还确保日历和帐户中的所有设置都设置为东部时区,至少在我能找到的任何地方都是如此。

我在 Google 网站上看到很多人在使用 ical 或其他提要时遇到类似问题,但我没有看到有人使用与我的代码类似的代码遇到问题。

该网站已上线:http://fletcheracademy.com。这是拉动它的主要 javascript 代码。

我可能遗漏了一些细节,如果您还有其他需要知道的,请告诉我。非常感谢!

<script type="text/javascript">
 google.load("gdata", "2.x");

 function init() {
    google.gdata.client.init(handleGDError);
    loadDeveloperCalendar();
 }


 function loadDeveloperCalendar() {
    loadCalendarByAddress('fletcheracademycalendar@gmail.com');
 }

 function padNumber(num) {
    if (num <= 9) {
       return "0" + num;
    }
    return num;
 }

 function loadCalendarByAddress(calendarAddress) {
    var calendarUrl = 'https://www.google.com/calendar/feeds/' +     
                       calendarAddress + '/public/full';

    loadCalendar(calendarUrl);
}


 function loadCalendar(calendarUrl) {
    var service = new 
        google.gdata.calendar.CalendarService('gdata-js-client-samples-simple');
    var query = new google.gdata.calendar.CalendarEventQuery(calendarUrl);
    query.setOrderBy('starttime');
    query.setSortOrder('ascending');
    query.setFutureEvents(true);
    query.setSingleEvents(true);
    query.setMaxResults(5);

    service.getEventsFeed(query, listEvents, handleGDError);
 }


 function handleGDError(e) {
    document.getElementById('jsSourceFinal').setAttribute('style', 'display:none');
    if (e instanceof Error) {
      alert('Error at line ' + e.lineNumber + ' in ' + e.fileName + '\n' + 'Message: ' + e.message);
      if (e.cause) {
         var status = e.cause.status;
         var statusText = e.cause.statusText;
         alert('Root cause: HTTP error ' + status + ' with status text of: ' + statusText);
        }
    } else {
        alert(e.toString());
    }
}

function listEvents(feedRoot) {
    var entries = feedRoot.feed.getEntries();
    var eventDiv = document.getElementById('events');
    if (eventDiv.childNodes.length > 0) {
        eventDiv.removeChild(eventDiv.childNodes[0]);
    }     
    var ul = document.createElement('ul');
    //document.getElementById('calendarTitle').innerHTML = 
    // "Calendar: " + feedRoot.feed.title.$t;

    var len = entries.length;
    for (var i = 0; i < len; i++) {
        var entry = entries[i];
        var title = entry.getTitle().getText();
        var startDateTime = null;
        var startJSDate = null;
        var times = entry.getTimes();
        if (times.length > 0) {
            startDateTime = times[0].getStartTime();
            startJSDate = startDateTime.getDate();
        }
    var entryLinkHref = null;
    if (entry.getHtmlLink() != null) {
        entryLinkHref = entry.getHtmlLink().getHref();
    }
    var dateString = (startJSDate.getMonth() + 1) + "/" + startJSDate.getDate();
    if (!startDateTime.isDateOnly()) {
        dateString += " " + startJSDate.getHours() + ":" + 
        padNumber(startJSDate.getMinutes());
    }

    var li = document.createElement('li');

    if (entryLinkHref != null) {
        entryLink = document.createElement('a');
        entryLink.setAttribute('href', entryLinkHref);
        entryLink.appendChild(document.createTextNode(title));
        li.appendChild(entryLink);
        li.appendChild(document.createTextNode(' - ' + dateString));
    } else {
        li.appendChild(document.createTextNode(title + ' - ' + dateString));
    }       

    ul.appendChild(li);
}
eventDiv.appendChild(ul);
}

google.setOnLoadCallback(init);

</script> 

【问题讨论】:

  • 以后请正确缩进您的代码。不知道代码时,未缩进的代码很难阅读。

标签: timezone google-calendar-api


【解决方案1】:

试试这个!

你在哪里:

var calendarUrl = 'https://www.google.com/calendar/feeds/' + calendarAddress + '/public/full';

你应该添加类似的东西:

&ctz=欧洲/里斯本

检查 here 以获取您所在时区的正确名称。

【讨论】:

    猜你喜欢
    • 2011-10-09
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2011-07-14
    • 2013-05-11
    • 2019-09-08
    相关资源
    最近更新 更多