【问题标题】:why Google Calendar all day events return start date as today with php为什么谷歌日历全天事件返回开始日期为今天与 php
【发布时间】:2014-11-23 01:39:48
【问题描述】:

我正在使用带有 PHP 的 Google 日历 API V3,并试图获取活动的摘要、描述和开始日期。我的问题是最后一个元素:开始日期。当日历中的事件设置为“全天”事件时,以下代码的响应会为我提供今天的日期和进行查询的确切时间:

echo "<div id=Activite class=titre>", $event->getSummary(), "</div>\n";

$event_date = (new DateTime($event->getStart()->getDateTime()))->format('d/m/Y H:i');
echo "<div class=date_start><span style=color:yellow;>Start: </span>", $event_date, "</div>\n";

以下是返回的示例:

prise de photos des élèves
Start: 22/11/2014 18:30

从“Google APIs Explorer”读取相同的输出,我得到:

start": {
"date": "2013-09-13"

这与我的情况完全不同。我做错了什么?

【问题讨论】:

  • 我没有使用过 API,但是你应该先检查你的数据。比如var_dump($event-&gt;getStart()-&gt;getDateTime());给你什么?我最好的猜测是 DateTime 无法解析该字符串。根据您的结果,您可以使用不同格式的字符串创建日期,例如:$date = DateTime::createFromFormat('j-M-Y', $event-&gt;getStart()-&gt;getDateTime()); echo $date-&gt;format('d/m/Y H:i');
  • 非常有趣,但现在,这非常令人费解。当我尝试使用 var_dump 函数时,您的好建议告诉我,这将返回 NULL 答案。我觉得这很有趣,因为对于不是全天活动的帖子,var_dump 函数会返回正确的信息。但不适用于全天活动。要是我明白这里缺少什么就好了。在不是全天事件的答案上,我得到一个 ver_dump ,例如: string(25) "2013-09-17T15:30:00-04:00" 。 string(25) 是什么意思?
  • string(25) 只是 var_dump 告诉您数据的类型“2013-09-17T15:30:00-04:00”是一个包含 25 个字符的字符串。在 null 上运行 new DateTime 会给你今天的日期,因此你的结果。让 DateTime 感到困惑的是“15:30:00-04:00”。它不能处理开始和结束时间,所以你必须自己解析它。你可以在最后一个破折号之后剪断字符串以获得我猜的开始时间。
  • 明白。但让我印象深刻的是,由于 Google 在他们的 API 中使用 getStart 函数,它并不总是有效。例如,当使用全天事件时,此函数为 NULL。逻辑在哪里?但感谢您的见解 ippi。
  • 尝试$event-&gt;getStart()-&gt;getDate() 进行全天活动。逻辑是全天事件没有特定时间。您将如何决定全天活动的时间?您是否将其设置为 00:00:00 并希望人们不要使用它?相反,他们使用单独的日期字段。 Date 与 DateTime 不同,因此为“几乎”相同的事物设置两个字段可能看起来令人困惑,但这可能是最合乎逻辑的解决方案。

标签: php google-calendar-api


【解决方案1】:

好吧,答案就在这里。经过“ippi”的大力建议,我了解到谷歌对一个事件使用了 2 个不同的变量:开始...“日期”/“日期时间”。对我有用的代码是这种解决方法,它使代码能够识别它是否正在处理全天事件:

if (($event->getStart()->getDate())!= NULL) {
    $event_date = (new DateTime($event->getStart()->getDate()))->format('d/m/Y');
} else {
    $event_date = (new DateTime($event->getStart()->getDateTime()))->format('d/m/Y H:i');
}

【讨论】:

猜你喜欢
  • 2016-08-09
  • 2014-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多