我正在使用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
但问题是它在日历上显示不正确。 请检查我的代码并告诉我那里有什么问题。
答案 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”找到一个功能 实现这种格式