猿问

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',

            'timeZone' => 'America/Toronto',

        ),

        'anyoneCanAddSelf'=>true,

        'guestsCanInviteOthers'=>true,

    );

问题


我应该如何更改我的代码,以便它自动工作,这样我就不需要每年两次手动更改我的代码/偏移量?


长风秋雁
浏览 102回答 1
1回答

扬帆大鱼

问题是您过度指定了dateTime参数以包含offset,但您还提供了一个timeZone参数。在这种情况下,该timeZone参数与(美国/多伦多在该日期的偏移量 -05:00)中的偏移值冲突dateTime。考虑到两者之间的冲突 - 它选择使用dateTime.事件资源的文档在属性中指定end.dateTime:时间,作为日期-时间组合值(根据 RFC3339 格式化)。除非在 timeZone 中明确指定时区,否则需要时区偏移量。(强调已添加)解决该问题的最简单方法是从dateTime您指定的偏移值中删除并依赖于timeZone设置。
随时随地看视频慕课网APP
我要回答