Php 创建新事件时事件时间不匹配

Php 创建新事件时事件时间不匹配,php,timezone,google-calendar-api,google-api-php-client,Php,Timezone,Google Calendar Api,Google Api Php Client,当我将事件添加到日历中时,dateTime开始/结束有问题 以下是我使用的代码: $event = new Google_Service_Calendar_Event(array( 'summary' => 'event title', 'description' => 'event description', 'start' => array( 'dateTime' => '2017-02-05T00:00:00-08:00', 'timeZ

当我将事件添加到日历中时,dateTime开始/结束有问题

以下是我使用的代码:

$event = new Google_Service_Calendar_Event(array(
  'summary' => 'event title',
  'description' => 'event description',
  'start' => array(
    'dateTime' => '2017-02-05T00:00:00-08:00',
    'timeZone' => 'Europe/Paris',
  ),
  'end' => array(
    'dateTime' => '2017-02-05T00:00:00-13:00',
    'timeZone' => 'Europe/Paris',
  )
));

$event = $cal->events->insert($room_calendar_id, $event);
此代码应在我的日历中添加一个事件,从08:00开始,到13:00结束。事实上,该事件从10:00开始添加,15:00结束。 它使日期时间增加了2个小时


您认为错误来自时区吗?

您将本地时间与时区偏移混淆

2017-02-05T00:00:00-08:00   =>  2017-02-05T08:00:00+01:00

2017-02-05T00:00:00-13:00   =>  2017-02-05T13:00:00+01:00

这两个值都应具有
+01:00
偏移量,因为这是
欧洲/巴黎事件发生时生效的UTC偏移量

您混淆了时区偏移的本地时间

2017-02-05T00:00:00-08:00   =>  2017-02-05T08:00:00+01:00

2017-02-05T00:00:00-13:00   =>  2017-02-05T13:00:00+01:00

这两个值都应具有
+01:00
偏移量,因为这是
欧洲/巴黎

事件发生时有效的UTC偏移量,巴黎在标准时间内使用
+01:00
,在夏季时间内使用
+02:00
,用于夏令时。您给出的日期是+1,而不是+2。此外,谷歌的API只需要一个时区(
Europe/Paris
)用于重复发生的事件,在这种情况下,您不应该指定偏移量(因为有些事件可能在+1,有些可能在+2)。因此,重述一下-如果您谈论的是单个事件,请包括偏移量,并且时区是可选的。对于重复事件,请忽略偏移,并且时区是必需的。我尝试添加一个开始时间为ex:2017-02-05T08:00:00,时区为欧洲\巴黎的事件。添加的事件在10:00开始。但无论如何,我通过比较本地时间和UTC时间解决了这个问题。所以在夏季,结果是+2,而在冬季,结果是+1。那对我有好处。ThanksParis在标准时间使用
+01:00
,在夏季使用
+02:00
进行夏令时。您给出的日期是+1,而不是+2。此外,谷歌的API只需要一个时区(
Europe/Paris
)用于重复发生的事件,在这种情况下,您不应该指定偏移量(因为有些事件可能在+1,有些可能在+2)。因此,重述一下-如果您谈论的是单个事件,请包括偏移量,并且时区是可选的。对于重复事件,请忽略偏移,并且时区是必需的。我尝试添加一个开始时间为ex:2017-02-05T08:00:00,时区为欧洲\巴黎的事件。添加的事件在10:00开始。但无论如何,我通过比较本地时间和UTC时间解决了这个问题。所以在夏季,结果是+2,而在冬季,结果是+1。那对我有好处。谢谢