php - 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,
);
问题
我应该如何更改我的代码以便它自动工作,这样我就不需要每年手动更改我的代码/偏移量两次?
解决方案
问题是您过度指定dateTime
参数以包含偏移量,但您也提供了一个timeZone
参数。在这种情况下,timeZone
参数与偏移量值冲突dateTime
(美国/多伦多在该日期是偏移量 -05:00)。
鉴于两者之间的冲突 - 它选择使用dateTime
.
事件资源的文档在end.dateTime
属性中指定:
时间,作为组合的日期时间值(根据 RFC3339 格式化)。除非在 timeZone 中明确指定时区,否则需要时区偏移量。
(重点补充)
解决问题的最简单方法是从dateTime
您指定的偏移值中删除并依赖timeZone
设置。
推荐阅读
- android - 如何更改项目语言项目“存储库”
- angular - 单击Angular中的textnox字段时如何显示文本框中的值?
- php - yii2 使用 dblib 驱动 SQLSTATE[HY000]: General error: 20018 Invalid object name t_user
- python - 为什么更改 Textclip 中的字体可能不起作用?
- javascript - Firefox 不允许调用 2dContext.getImageData
- python - 如何在python中获取从给定年份到当前日期的季度周期?
- xslt - 使用 xslt 消除重音字符
- android - 在 Android Studio 中导入 Autostarter 模块
- c# - 如何使用通用主机生成器运行 .NET Core 控制台应用程序
- mysql - 使用 maven mvn liquibase:generateChangeLog 和 GCP Mysql