2015-12-16 3 views
2

Я пытаюсь заставить Google Calendar Api работать. Без использования моих дней $ _POST это работает отлично. Но тогда дата жестко закодирована, как Google, и это не то, что я хочу. Когда я использую мой $ _POST вары он показывает мне эту ошибку:Google Calendar API дата времени

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**.' 

Мой код 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('[email protected]', $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 , Google Calendar требует от меня, чтобы иметь формат времени гривенник как:

$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 я» m с

$dt = new DateTime(); 
echo $dt->format("Y-m-d\TH:i:s.000+01:00") . "\n"; 

Так что мой вопрос: как мне получить ход ogle формат времени с PHP?

Спасибо

ответ

1

Глядя на 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));