Google日历上的日期显示无效

时间:2016-08-03 13:08:22

标签: php google-calendar-api

我正在使用PHP在Google日历上创建活动。 事件已成功创建,但在日历上显示错误的时间。

$start = '2016-08-04T13:30:00.000+02:00';
$end = '2016-08-04T18:00:00.000+02:00'
$timezone= 'Europe/Zurich';

$service = new Google_Service_Calendar($client);
        $event = new Google_Service_Calendar_Event(array(
            'summary' => $eventname,
            'location' => $address,
            'description' => $description,
            'start' => array(
              'dateTime' => $start,
              'timeZone' => $timezone,
            ),
            'end' => array(
              'dateTime' => $end,
              'timeZone' => $timezone,
            ),
            'attendees' => array(
              array('email' => $contactemail),
            ),
            'reminders' => array(
              'useDefault' => FALSE,
              'overrides' => array(
                array('method' => 'email', 'minutes' => 24 * 60),
                array('method' => 'popup', 'minutes' => 10),
              ),
            ),
          ));

        $event = $service->events->insert($calid, $event);

使用此代码可以成功创建事件。 当我在日历上检查事件时,它显示错误的时间。

请参阅此网址。 http://awesomescreenshot.com/00b62fl6ed

当我点击编辑事件然后检查 Startdate和enddate随时间变化是正确的。

请参阅此网址。 http://awesomescreenshot.com/0df62fkn00

但问题是它在日历上显示不正确。 请检查我的代码并告诉我那里有什么问题。

2 个答案:

答案 0 :(得分:0)

您的代码中有拼写错误。在第二行最后缺少分号。

$end = '2016-08-04T18:00:00.000+02:00';

但我认为,此错误将在谷歌日历设置中。如果您的时区和谐相符,请尝试在时区上查看Google日历设置。

答案 1 :(得分:0)

取自http://php.net/manual/en/function.date.php

的工作解决方案
<?php

/**
 * Get date in RFC3339
 * For example used in XML/Atom
 *
 * @param integer $timestamp
 * @return string date in RFC3339
 * @author Boris Korobkov
 */
function date3339($timestamp=0) {

    if (!$timestamp) {
        $timestamp = time();
    }
    $date = date('Y-m-d\TH:i:s', $timestamp);

    $matches = array();
    if (preg_match('/^([\-+])(\d{2})(\d{2})$/', date('O', $timestamp), $matches)) {
        $date .= $matches[1].$matches[2].':'.$matches[3];
    } else {
        $date .= 'Z';
    }
    return $date;
}

?>
  

背景:来自   http://www.ibm.com/developerworks/opensource/library/os-php-xpath/我   看到“已发布和更新的元素使用RFC 3339时间戳   格式。 “

     

并认为我应该谷歌“rfc3339 PHP”找到一个功能   实现这种格式