当我创建一个事件然后通过Google Script访问它时,我注意到endTime超出了我为事件设置的实际日期。当在日历中迭代数天以获取事件时,这可能是非常有问题的。
实施例: 进入Google日历并使用当天日期的标准默认设置设置全天活动。然后执行以下代码:
function foo() {
var cal = CalendarApp.getDefaultCalendar();
var date = new Date();
var events = cal.getEventsForDay(date);
Logger.log("Events for today: "+date);
for (var i=0; i<events.length;i++) {
Logger.log(events[i].getTitle());
Logger.log(" "+events[i].getStartTime());
Logger.log(" "+events[i].getEndTime());
}
date.setDate(date.getDate()+1);
Logger.log("\nEvents for tomorrow: "+date);
events = cal.getEventsForDay(date);
for (var i=0; i<events.length;i++) {
Logger.log(events[i].getTitle());
Logger.log(" "+events[i].getStartTime());
Logger.log(" "+events[i].getEndTime());
}
}
示例输出(来自Google Script日志):
Events for today: Wed Jul 04 2012 19:39:12 GMT+0200 (CEST)
Test
Wed Jul 04 2012 02:00:00 GMT+0200 (CEST)
Thu Jul 05 2012 02:00:00 GMT+0200 (CEST)
Events for tomorrow: Thu Jul 05 2012 19:39:12 GMT+0200 (CEST)
Test
Wed Jul 04 2012 02:00:00 GMT+0200 (CEST)
Thu Jul 05 2012 02:00:00 GMT+0200 (CEST)
OK
答案 0 :(得分:1)
答案 1 :(得分:1)
我现在重新审视这个问题3次寻找解决方案。我能找到的唯一合理的解决方案是在GMT + 0创建一个新日历。然后,所有“全天”事件将在一天内正确对齐。
答案 2 :(得分:0)
我收到同样的错误。我的全天活动将在美国东部时间晚上7点开始。我的临时克隆是检查今天的全天活动是否开始。代码段:
var allDayP = event.isAllDayEvent();
if (allDayP)
{
titl = '<font color="red">' + event.getTitle() + '</font>';
if (Utilities.formatDate(event.getStartTime(), Session.getTimeZone(),"M/d") == Utilities.formatDate(now, Session.getTimeZone(),"M/d"))
{
startTime = "All Day Event The Next Day";
endTime = Utilities.formatDate(event.getEndTime(), Session.getTimeZone(),"M/d")
}
else
{
startTime = "All Day Event Today";
endTime = Utilities.formatDate(event.getEndTime(), Session.getTimeZone(),"M/d")
}
}