Zend的谷歌日历API - 如何更改日期时间格式?(Zend Google Calendar A

2019-10-16 13:44发布

我使用Zend框架的GData的谷歌日历API和日期时间输出在RFC3339(看起来像这样:2012-01-19T22:00:00.000-08:00)。 我需要什么PHP代码,以便将其转换成UTC添加,使其看起来像这样:2012年1月19日,8 pm-11pm? 我发现的PHP代码,RFC日期转换为字符串,但我不知道有足够的了解PHP是能够改变的代码使用Zend的GData公式工作......你会在下面我的代码看,“约会“被称为‘何时’......因此任何代码都这两个连接不知何故...任何帮助表示赞赏!

<?php
$path = '/home/ZendGdata/library';
$oldPath = set_include_path(get_include_path() . PATH_SEPARATOR . $path);

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Calendar');

// User whose calendars you want to access
$user = 'my@email.com';
$pass = 'mypassword';
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; // predefined service name for calendar

$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service);
$service = new Zend_Gdata_Calendar($client);

$query = $service->newEventQuery();
// Set different query parameters
$query->setUser('mycalendarID');
$query->setVisibility('private');
$query->setProjection('full');
$query->setOrderby('starttime');
// Start date from where to get the events
$query->setStartMin('2012-01-01');
// End date
$query->setStartMax('2050-03-15');


// Get the event list
try {
    $eventFeed = $service->getCalendarEventFeed($query);
} catch (Zend_Gdata_App_Exception $e) {
    echo "Error: " . $e->getMessage();
}
echo "<ul>";
foreach ($eventFeed as $event) {
echo "<tr>";
    foreach ($event->when as $when) {
      echo "<td>" . $when->startTime . "</td>";
    }
    echo "<td>" . $event->content . " </td>";
    $where=$event->Where;
    foreach($where as $eventplace)
    {
        echo "<td>" . $eventplace . " </td>";
    }

}
echo "</tr>";
echo "</ul>";
?>

感谢您对这个信息@vascowhite。

两个问题:

  1. 输出原来是这样的:字符串(23)“20 2012年1月:06:00”

  2. 我拉着从我的谷歌日历此信息,并且它输出到我的html页面...我不是不通过这个PHP创建新的事件......所以这段代码简单地转换,你写的日期,也没有转换这是从这个代码把我的谷歌日历事件日期:

foreach ($event->when as $when) { echo "<td>" . $when->startTime . "</td>"; }

你知道怎么做吗?

谢谢你,苏珊

Answer 1:

您可以使用PHP的日期时间类来做到这一点很容易。

首先从时间字符串创建一个DateTime对象: -

$timestr = '2012-01-19T22:00:00.000-08:00';
$date = new DateTime($timestr);

这个对象是在正确的时区,因为“-08:00”的字符串的一部分。 现在决定哪个时区要转换并创建一个DateTimeZone对象(我选择了UTC为您特别提到它): -

$tz = new DateTimeZone('UTC');
$date->setTimezone($tz);

您的DateTime对象现在已经转换为UTC时区。
您可以通过把它变成你想要的格式的DateTime ::格式()方法: -

var_dump($date->format('d F  Y: H:i'));

输出:

2012 1月20日:06:00

适合你的代码: -

foreach ($event->when as $when) {
  $date = new DateTime($when->startTime);
  echo "<td>" . $date->format('d F  Y: H:i') . "</td>";
}


文章来源: Zend Google Calendar API - How to Change DateTime Format?