나는 공공 Google 캘린더에서 정보를 검색 할 수있는 Ajax 호출이 있습니다 기능 ProcessData(data)
내Google 캘린더 API에서 '하루 종일'이벤트를 검색 할 때 시간대 오프셋을 어떻게 계산합니까?
$.ajax({
url: "https://www.google.com/calendar/feeds/{CalID}/public/full?start-min={StartTime}&start-max={endTime}&alt=json-in-script&callback=?";
dataType: 'json',
timeout: 3000,
success: function(data) { ProcessData(data);},
});
I 다음 문이 : 날짜 A를 StartTime
에 Date()
객체를 저장
StartTime = new Date(data.feed.entry[i].gd$when[j].startTime);
을 특정 이벤트가 시작됩니다. Google은 일반적으로 YYYY-MM-DDThh : mmTZD (예 : 1997-07-16T19 : 20 + 01 : 00)의 ISO 8601 시간 형식을 사용하며 정상적으로 작동합니다. 그러나 "하루 종일"이벤트의 경우 형식은 YYYY-MM-DD 형식 (예 : 1997-07-16) (W3 http://www.w3.org/TR/NOTE-datetime에서 허용)이며이 경우 new Date()
은 GMT로 해석합니다. 즉, 현지 시간대에 이벤트가 이미 생성 된 경우에도 해당 날짜를 현지 시간대로 수정합니다. 그것은 2014 년 19 일 4월 6일 이전
new Date("2014-04-07")
반환 5시간 것처럼 내 특정 경우에는, 내 시간대에 일어나고 말,에 "하루 종일"이벤트, 4 월 7 일 2014를 검색 할 때하는 문자열을 반환합니다 : 00:00 GMT-0500 (CDT) 시간은 5 시간입니다. (날짜 구문 분석에 대한 자세한 내용은 question을 참조하십시오.)
Google 캘린더를 사용할 때이 문제를 해결해 본 경험이 있습니까? 그렇다면 어떻게 해결 했습니까? 나는 실제로 시간대를 설명 할 새로운 Date() 대신 다른 방법을 사용해야합니까?
Google의 JSON 응답에는 Olson의 표준 시간대 ID가 포함 된 매개 변수 feed.timezone이 포함되어 있지만 ID가 실제 오프셋으로 변환 될 수있는 방법이 필요합니다. 이 포럼에서 다음 question을 찾았지만이 문제는이 API에 필요한 매개 변수가 실제 도시가 아니라 시간대 ID가 아니라 시간대 ID에서 도시로의 번역을 URL로 전달하도록 만드는 것입니다. 끈.
도움이 될 것입니다.