2011-12-29 2 views
1

저는 근무중인 학교 웹 사이트 용 Google 캘린더를 가지고 있으며 다음 5 가지 캘린더 이벤트를 표시하기 위해 Google API를 사용하고 있습니다. 한 가지 문제는 시간이 오전과 오후 대신 24 시간 시계에 표시된다는 것인데, 이것이 내 주요 문제는 아닙니다. 주된 문제는 이벤트가 웹 사이트에서 정확한 시간을 표시하는 동안 캘린더 이벤트보기에서 이벤트를 보려면 클릭하면 동부 시간 대신 GMT 시간 만 표시된다는 것입니다. Google 계정에 로그인하는 동안 이벤트는 올바른 시간대를 표시하지만 로그인하지 않은 상태에서 볼 때마다 GMT가 기본값이됩니다.Google 캘린더에 정확한 시간이 표시되지 않습니다.

다른 표준 시간대로 변경하고 다시 변경하려고 시도했지만 수정하지 않았습니다.

캘린더와 계정의 모든 설정이 동부 표준시로 설정되어 있는지 확인했습니다. 적어도 모든 곳에서 찾을 수있었습니다.

ic 또는 다른 피드를 사용하는 Google 사이트에서 비슷한 문제가있는 사람을 많이 보았지만 문제가있는 사람은 내 것과 비슷한 코드를 사용하여 보지 못했습니다.

웹 사이트는 http://fletcheracademy.com입니다. 그리고 여기 그것을 가져 오는 주요 자바 스크립트 코드가 있습니다.

누락 된 세부 정보가있을 수 있습니다. 알아야 할 사항이 있으면 알려주세요. 정말 고마워!

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

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


function loadDeveloperCalendar() { 
    loadCalendarByAddress('[email protected]'); 
} 

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> 
+0

앞으로 코드를 올바르게 들여 씁니다. 코드를 모르는 경우에는 들여 쓰기가 어려운 코드를 읽기가 어렵습니다. – Amy

답변

0

시도해보십시오!

당신이 여기서

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

당신과 같이 추가해야합니다 : 시간대의 정확한 이름을

& CTZ = 유럽/리스본

확인 here합니다.

관련 문제