我正在尝试使用Google Calendar Api。没有使用我的$ _POST日期时间,它完美无缺。但随后日期就像谷歌一样硬编码,这不是我想要的。当我使用我的$ _POST变量时,它会向我显示此错误:
Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling POST https://www.googleapis.com/calendar/v3/calendars/%40group.calendar.google.com/events?key=: (400) **Start and end times must either both be date or both be dateTime**.'
我的日期时间代码:
if ($client->getAccessToken()){
$dt = new DateTime();
echo $dt->format("Y-m-d\TH:i:s.000+01:00") . "\n";
if (isset($_POST['addevent'])){
echo "<hr><font size=+1>I have access to your calendar</font>";
$event = new Google_Service_Calendar_Event();
$event->setSummary($_POST['title']);
$event->setLocation($_POST['location']);
$start = new Google_Service_Calendar_EventDateTime();
$start->setTimeZone('Europe/Amsterdam');
$start->setDateTime($dt);
$event->setStart($start);
$end = new Google_Service_Calendar_EventDateTime();
$end->setDateTime($dt);
$event->setEnd($end);
$createdEvent = $cal->events->insert('f8ov32gchvan0b6a0594r72jng@group.calendar.google.com', $event);
echo "<br><font size=+1>Event created</font>";
echo "<hr><br><font size=+1>Already connected</font> (No need to login)";
}
我也正在试验echo $dt->format("c") . "\n";
只有没有.000才能给我同样的东西。
谷歌日历要求我有一个角钱时间格式,如:
$start->setDateTime('2012-10-31T10:00:00.000-05:00');
$event->setStart($start);
$end = new Google_EventDateTime();
$end->setDateTime('2012-10-31T10:25:00.000-05:00');
$event->setEnd($end);
来源:Create Simple Google Calendar Event in PHP
我的HTML输入字段:
<input type="datetime-local" name="date1">Date1<br>
<input type="datetime-local" name="date2">Date2<br>
ATM我没有使用我的$ _POST我正在检查
$dt = new DateTime();
echo $dt->format("Y-m-d\TH:i:s.000+01:00") . "\n";
所以我的问题是,如何使用PHP获取谷歌时间格式?
谢谢
答案 0 :(得分:3)
查看Google Calendar API docs所需格式必须遵循RFC 3339格式。要将DateTime
转换为此格式,可以将DateTime::format函数与DateTime::RFC3339常量结合使用。
你应该得到类似的东西:
$dt = new \DateTime();
$calendarDateTime = new \Google_Service_Calendar_EventDateTime();
$calendarDateTime->setDateTime($dt->format(\DateTime::RFC3339));