DST 在 GCal 事件中导致 +1 小时时差

Posted

技术标签:

【中文标题】DST 在 GCal 事件中导致 +1 小时时差【英文标题】:DST Causing +1 hour time difference in GCal Events 【发布时间】:2012-04-12 12:25:09 【问题描述】:

我有一个基于 php 的应用程序,其中我将 GCal 与 OAuth 2.0 API 集成在一起。除了 DST +1 小时问题外,一切正常。此应用程序仅适用于英国,我还存储用户帐户时区。如果我在凌晨 3:00 添加任务,在 GCal 上会显示凌晨 4:00。这是我在添加任务时在 setTimeZone() 中将时区硬编码为 Europe/London 的时候。此外,GCal 帐户设置也为 Europe/London。这有点令人沮丧,所以请帮助我改变我的代码以处理这个 DST +1 小时的时差。这是代码:

$evt = new Event();
$evt->setDescription($txtDesc); 
$evt->setSummary($taskTypeTxt);

#--Setting Event Date
$evtDT  = new EventDateTime();
$evtDT2     = new EventDateTime();

$evtDT->setDateTime($startDate); 
$evtDT->setTimeZone('Europe/London');

$evtDT2->setDateTime($endDate);
$evtDT2->setTimeZone('Europe/London');
$evt->setOriginalStartTime($evtDT);
$evt->setStart($evtDT);
$evt->setEnd($evtDT2);

$field = array('items/id');
$evtId = $cal->events->insert($user_email,$evt,$field);

【问题讨论】:

【参考方案1】:

我也遇到了同样的问题。

将时区设置为 GMT+0 还是 GMT+1 (BST) 似乎存在一些歧义。后者意味着我随后必须手动处理 DST 更改,但是当我设置 GMT+0 时,它不会在时钟更改时自动更新。

【讨论】:

已通过在事件日期中添加 +1 小时来解决此问题 >> define("GCAL_DST","+01:00"); $startDate = date('Y').'-'.date('m').'-'.date('d').'T'.date('H').':'.date(' i').':00'.GCAL_DST;目前工作正常。

以上是关于DST 在 GCal 事件中导致 +1 小时时差的主要内容,如果未能解决你的问题,请参考以下文章

jvm中导致Full GC的情况

选择计划项目时在 Postgres 中考虑 DST

选择计划项目时在 Postgres 中考虑 DST

在固定时间后对实体执行操作

AnyLogic——我的运输车队在一小时内完成了多少次旅行?

Winform 事件