PHP时间()到Google日历日期时间格式

Mic*_*ael 4 php time datetime google-calendar-api

我有PHP时间用于事件的开始和结束时间.这<?php time(); ?>对于未来某个日期的开始和结束时间来说非常简单.我想知道是否有人知道如何采用数字格式(PHP时间())或采用代表该时间的一些字符串值(我可以做strtotime($sometimevalue);)并将其转换为所需的Google日历时间格式.

足够的说话 - 这里是时间格式的一个例子:

20150107T003000Z/20150107T023000Z
Run Code Online (Sandbox Code Playgroud)

这相当于2015年1月6日下午5:30至2015年1月6日晚上7:30.

那么有人可以向我解释如何将a翻译time()成这种格式吗?

Age*_*rum 6

试试这个:

date_default_timezone_set('UTC');
$date = date("Ymd\THis\Z");
Run Code Online (Sandbox Code Playgroud)

第一行设置用于UTC的默认时区(这是格式化时间结束时的"Z":) Z = "Zulu Time".我这样做是因为我不知道Google是否期待UTC时间.如果您可以使用其他时区,则可以使用其他时区格式之一.

在下一行中,我date用来格式化当前的Unix时间戳(当没有时间戳传递给date它时默认为当前时间 - 即time()).我会为你分开它:

  • Y - 四位数年份
  • m - 两位数(包括前导零,如有必要)月份
  • d - 当月的两位数(包括必要的前导零)
  • \T- 文字字符T,它是一个分隔符,用于标识日期的时间部分开始.斜杠是为了逃避T,因为它用于显示时区缩写(例如"PST")
  • H - 两位数(包括前导零,如有必要)小时
  • i - 两位数(包括前导零,必要时)分钟
  • s - 两位数(包括前导零,必要时)秒
  • \Z- 字面字符Z,表示如上所述的祖鲁时间.斜杠是为了逃避T,因为它用于以UTC为单位显示时区(以秒为单位).

作为参考,并确保我准确地解释了这个问题,这段代码:

date_default_timezone_set('UTC');
echo date("Ymd\THis\Z", time());
Run Code Online (Sandbox Code Playgroud)

目前显示以下结果:

20110415T014623Z
Run Code Online (Sandbox Code Playgroud)

我应该注意,您也可以使用gmdate()代替date()并消除date_default_timezone_set()调用的需要,因为gmdate()返回GMT中的结果.我只是毫不犹豫地提到这一点,因为我从来没有100%明确GMT和UTC之间的差异,特别是与BST(英国夏令时)之类的其他时区/时期以及它们如何改变GMT(如果有的话).如果有人可以在评论中澄清这一点,我将非常感激.


Joe*_*ins 5

工作解决方案取自http://php.net/manual/en/function.date.php .感谢Boris Korobkov.

// boris at psyonline dot ru 14-Jun-2007 03:05

<?php

/**
 * Get date in RFC3339
 * For example used in XML/Atom
 *
 * @param integer $timestamp
 * @return string date in RFC3339
 * @author Boris Korobkov
 */
function date3339($timestamp=0) {

    if (!$timestamp) {
        $timestamp = time();
    }
    $date = date('Y-m-d\TH:i:s', $timestamp);

    $matches = array();
    if (preg_match('/^([\-+])(\d{2})(\d{2})$/', date('O', $timestamp), $matches)) {
        $date .= $matches[1].$matches[2].':'.$matches[3];
    } else {
        $date .= 'Z';
    }
    return $date;
}

?>
Run Code Online (Sandbox Code Playgroud)

背景:来自 http://www.ibm.com/developerworks/opensource/library/os-php-xpath/ 我看到"已发布和更新的元素使用RFC 3339时间戳格式".

并认为我应该谷歌"rfc3339 PHP"找到实现这种格式的功能