日历事件的当地时间

问题描述 投票:0回答:1

当我使用类似的脚本时

 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() 似乎忽略了该设置。当然,我可以将时间偏移添加到从脚本接收响应的应用程序中返回的结果,但我宁愿看到脚本返回正确的日期。 我该如何解决这个问题?

calendar utc
1个回答
0
投票

以一种奇怪的方式解决了。我做了一些尝试,当我改变了声明时

var obj = {类型:item.getTitle(),日期:item.getAllDayStartDate()}

对此:

var obj = {类型:item.getTitle(),日期:(item.getStartTime() + (3 * 小时))}

我没有得到(错误的)开始时间 + 3 小时,这将使活动在正确的日期进行。相反,我现在得到了正确的日期和时间,包括与 UTC 时间的偏差“GMT+0100”。这就是我最初想要的。 也许在 item.getStartTime() 的结果中添加一定量的时间会隐式地将结果转换为本地时间???

© www.soinside.com 2019 - 2024. All rights reserved.