当我使用类似的脚本时
var now = new Date(),
then = new Date();
// _interval is passed to cal.getEvents as nr of seconds
then.setSeconds(now.getSeconds() + _interval);
Logger.log('then = ' + then);
// get all calendar events between 'now' and 'then'
// create an empty response object
var items = cal.getEvents(now, then),
length = items.length,
response = {};
// if cal.getEvents returns any events (length > 0)
// get the title and the date of the event and save this to the output array
if (length)
{
arr = [];
itemCount = 0;
for(var item of items)
{
var obj = {TYPE: item.getTitle(), DATE: item.getAllDayStartDate()}
arr.push(obj);
if(++itemCount >= 10) {
break;
}
}
“now”是调用脚本的时间点,“then”是该时间点+一个间隔,以秒为单位表示。那行得通。我遇到的问题是这样的: 当日历事件是全天事件时,脚本始终返回事件前一天的时间 23:00:00.000Z。我在 Google 日历中的时区设置为 GMT + 1,但函数 item.getAllDayStartDate() 似乎忽略了该设置。当然,我可以将时间偏移添加到从脚本接收响应的应用程序中返回的结果,但我宁愿看到脚本返回正确的日期。 我该如何解决这个问题?
以一种奇怪的方式解决了。我做了一些尝试,当我改变了声明时
var obj = {类型:item.getTitle(),日期:item.getAllDayStartDate()}
对此:
var obj = {类型:item.getTitle(),日期:(item.getStartTime() + (3 * 小时))}
我没有得到(错误的)开始时间 + 3 小时,这将使活动在正确的日期进行。相反,我现在得到了正确的日期和时间,包括与 UTC 时间的偏差“GMT+0100”。这就是我最初想要的。 也许在 item.getStartTime() 的结果中添加一定量的时间会隐式地将结果转换为本地时间???