我從Google日曆XML中處理JSON日期時遇到問題。我提取了.startTime和.endTime &我使用jQuery格式化這些日期(+所有日期之間)爲YYYY-MM-DD。然後,我使用格式化的日期向我自己的日曆中匹配的唯一ID(#YYYY-MM-DD)的表單元添加背景顏色。它的工作正常,但是在這個過程中,日期變得不匹配。我下面的流程是:jQuery/JSON日期處理
- 在谷歌日曆Enter事件。對於我的測試活動,我使用了25日 - 27日 2014年3月(全日事件打勾)。
- 提取XML JSON數據:
"gd$when": [{"endTime": "2014-03-28", "startTime": "2014-03-25"
(所以我已經很困惑,因爲JSON具有添加到我的活動結束日期多一天 - 爲什麼?)
使用jQuery的下面將格式化的日期分配給我自己的Cal的ID。 (感謝@Ezequiel,他幫助我獲得了這麼多 - 我對jQuery不太瞭解)。
function GCalEvents() { var calendar_json_url = "https://www.google.com/calendar/feeds/my_email%40googlemail.com/public/full?orderby=starttime&sortorder=ascending&max-results=60&futureevents=true&alt=json" // Get list of upcoming events formatted in JSON jQuery.getJSON(calendar_json_url, function(data){ // Parse and render each event jQuery.each(data.feed.entry, function(i, item){ var formatInt = function (i) { if (i < 10) return "0" + i; return i; }; var format = function (d) { var date = d.getDate(); var month = d.getMonth() + 1; var year = d.getFullYear(); return year + "-" + formatInt(month) + "-" + formatInt(date); }; var getDates = function (start, theend) { var current = new Date(start); var finish = new Date(theend); var result = []; do { current.setDate(current.getDate() + 1); result.push(format(current)); } while (current < finish); return result; }; // Apply background to dates. var start = item.gd$when[0].startTime; var theend = item.gd$when[0].endTime; var dates = getDates(start, theend).map(function toId(date) { return "#" + date }).join(","); jQuery(dates).removeClass('date-cell').addClass('date-selected'); }); }); }
檢查日曆,並有彩色26日,27日,28日三月的背景 - 所以最終的效果是,它已經改變了我的整個原克卡事件向前一天,相對於JSON有正確的結束日期,但錯誤的開始日期!顯然,我只是想要顯示正確的GCal日期。
事情我已經嘗試:
var date = d.getDate() -1 ;
- 但是,這會導致該月的最後一天的問題。- 有沒有其他的jQuery功能干擾。
- 我自己的日曆表格單元ID正在生成。
它是否與時區有關?
我會很感激任何人可以給的幫助。
感謝您的幫助。將事件設置爲「正常」會糾正結束日期。你有什麼想法,爲什麼開始日期是錯誤的? (對不起,如果我在OP中使用了錯誤的術語,JSON對我來說是一個新領域)。 – theflyingant
我沒有嘗試過,但它可能是'current.setDate(current.getDate()+ 1);'我看到'do'的主體。特別是'+ 1'。 – fredrik