Google Calendar API 日期时间 [英] Google Calendar API date time
问题描述
我正在尝试让 Google Calendar Api 正常工作.如果不使用我的 $_POST 日期时间,它就完美无缺.但是,日期是像谷歌那样硬编码的,这不是我想要的.当我使用我的 $_POST 变量时,它显示了这个错误:
致命错误:未捕获的异常Google_Service_Exception",消息为调用 POST 时出错 https://www.googleapis.com/calendar/v3/calendars/%40group.calendar.google.com/events?key=:(400) **开始和结束时间必须都是日期或都是日期时间**.'
我的日期时间代码:
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>我可以访问你的日历</font>";$event = new Google_Service_Calendar_Event();$event->setSummary($_POST['title']);$event->setLocation($_POST['location']);$start = new Google_Service_Calendar_EventDateTime();$start->setTimeZone('欧洲/阿姆斯特丹');$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>事件创建</font>";echo "<hr><br><font size=+1>已连接</font>(无需登录)";}
我也在试验 echo $dt->format("c") ."\n";
只有没有 .000 才给我同样的东西.Google 日历要求我使用一角硬币时间格式,例如:
$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);
我的 HTML 输入字段:
Date1
<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 获取谷歌时间格式?
谢谢
查看 Google Calendar API 文档 所需的格式必须遵循 RFC 3339 格式.要将 DateTime
转换为这种格式,可以使用 DateTime::format 函数与 DateTime::RFC3339 常数.
你应该得到类似的东西:
$dt = new \DateTime();$calendarDateTime = new \Google_Service_Calendar_EventDateTime();$calendarDateTime->setDateTime($dt->format(\DateTime::RFC3339));
I'm trying to get the Google Calendar Api to work. Without the use of my $_POST date times it works perfect. But then the date is hard coded like the google ones and that is not what i want. When i use my $_POST vars it shows me this error:
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**.'
My dateTime code:
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)";
}
I'm also experimenting with echo $dt->format("c") . "\n";
which is giving me the same thing only without .000 .
Google Calendar requires me to have a dime time format like:
$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);
Source: Create Simple Google Calendar Event in PHP
My HTML input fields:
<input type="datetime-local" name="date1">Date1<br>
<input type="datetime-local" name="date2">Date2<br>
ATM i'm not using my $_POST i'm checking with
$dt = new DateTime();
echo $dt->format("Y-m-d\TH:i:s.000+01:00") . "\n";
So my question is, How do i get the google time format with PHP?
Thank you
Looking at the Google Calendar API docs the required format must follow the RFC 3339 format. To convert a DateTime
to this format one can use the DateTime::format function in conjunction with the DateTime::RFC3339 constant.
You should get something like:
$dt = new \DateTime();
$calendarDateTime = new \Google_Service_Calendar_EventDateTime();
$calendarDateTime->setDateTime($dt->format(\DateTime::RFC3339));
这篇关于Google Calendar API 日期时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!