Google Calendar API时区夏令时和标准时间问题

问题描述

当我创建一个日期接近的事件时,一切正常。

但是当我创建几个月后的活动时,说它属于夏令时DST时(而我目前处于夏令时),则该事件的创建时间会不必要1小时偏移量。

下面的代码将产生以下输出:

Starts 2020-12-20 9:00 Ends 2020-12-20 11:00

 $event = array(
        'summary' => $attributes['summary'],'location' => $attributes['location'],'description' => $attributes['description'],'start' => array(
            'dateTime' => 2020-12-20T10:10:00-04:00','timeZone' => 'America/Toronto',),'end' => array(
            'dateTime' => 2020-12-20T10:12:00-04:00','anyoneCanAddSelf'=>true,'guestsCanInviteOthers'=>true,);

问题

我应该如何更改代码,使其自动运行,而无需每年两次手动更改代码/偏移量?

解决方法

问题是您过度指定了dateTime参数以包含偏移量,但同时也提供了timeZone参数。在这种情况下,timeZone参数与dateTime中的偏移值冲突(美国/多伦多在该日期的偏移量为-05:00)。

鉴于两者之间的冲突-它选择使用dateTime中指定的偏移量。

documentation for the Event resourceend.dateTime属性中指定:

时间,以组合的日期时间值(根据RFC3339格式)设置。 除非在timeZone中明确指定了时区,否则需要时区偏移。

(添加了重点)

解决问题的最简单方法是从您指定的dateTime中删除偏移值,并依靠timeZone设置。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...