Правильное форматирование даты для события Календаря Google

79
4

Я пытаюсь создать событие для Календаря Google, и я получаю эту ошибку:

Invalid value for: "T" found, can only parse bare date string: 2013-08-22T16:00:00

Я также попытался добавить смещение часового пояса к моей строке, но я установил часовой пояс вручную в объекте EventDateTime и, согласно документации, это не обязательно.

Вот как я создаю свою временную строку:

data['start'] = $("#inputDateStart").val() + "T" + $("#inputTimeStart").val();

И как я установил эту строку в моем объекте

$start = new Google_EventDateTime();
$start->setTimeZone('America/Montreal');
$start->setDateTime($data['start']);
$event->setStart($start);

Что мне не хватает? Все дневные события отлично работают, когда я просто устанавливаю дату с помощью функции setDate.

спросил(а) 2013-08-19T15:22:00+04:00 7 лет, 1 месяц назад
1
Решение
97

Я не знаю весь ваш код, но я получал такое же сообщение об ошибке при попытке установить дату в событии календаря Google. Когда я использовал онлайн-авию Google, формат даты и времени и часовой пояс, который я использовал, работали просто отлично. В конце концов я обнаружил, что проблема в том, что я сделал это (используя что-то похожее на ваши обозначения):

$start = new Google_EventDateTime();
$start->setDate('2013-10-10');
$event->setStart($start);

И потом, после обнаружения, у меня были данные о дате и времени:

$start->setTimeZone('Europe/London');
$start->setDateTime('2013-10-10T19:15:00');
$event->setStart($start);

Это дало мне сообщение об ошибке, которое вы упомянули. Возможно, аналитик Google подумал, что это только однодневное мероприятие, а затем было смущено дополнительными данными о дате/времени. Проблема исчезла, когда я проверил сначала, если у меня есть данные о дате и времени, и просто сделал:

$start = new Google_EventDateTime();
$start->setTimeZone('Europe/London');
$start->setDateTime('2013-10-10T19:15:00');
$event->setStart($start);

ответил(а) 2013-10-11T09:22:00+04:00 6 лет, 11 месяцев назад
57

Вы можете просто добавить часовой пояс в конце времени:

$start = new Google_EventDateTime();
$start->setDateTime('2011-06-03T10:00:00-07:00');
$event->setStart($start);

Это GMT-7

Поэтому в вашем случае это будет работать:

$start = new Google_EventDateTime();
$start->setDateTime($data['start']."-4:00");
$event->setStart($start);

:)

Хотя исходная документация для googles устарела и недействительна, вы можете использовать некоторые из своих методов: https://developers.google.com/google-apps/calendar/v3/reference/events/insert

ответил(а) 2014-03-17T16:21:00+04:00 6 лет, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема