【问题标题】:How can I format timestamps with embedded `T` character?如何使用嵌入的“T”字符格式化时间戳?
【发布时间】:2010-02-13 15:27:34
【问题描述】:

我需要将时间戳格式化为 ISO 8601 格式(例如 2001-10-26T21:32:52)。当我在 PHP 中使用 date() 函数时,它会将 T 替换为时区(应该这样做)。

我使用的命令是:

$time = date("y-m-dTH:i:s", time());

这会产生:10-02-13EST10:21:03

如何让它插入实际的T 而不是替换为EST

【问题讨论】:

    标签: php xsd datetime-format iso8601


    【解决方案1】:

    你的格式应该是:“c”

    $time = date("c", time());
    

    来自PHP manual

    Format Descriptions                        Example
    c      ISO 8601 date (added in PHP 5)   2004-02-12T15:19:21+00:00
    

    【讨论】:

    • 如果你使用DateTime,那么$date->format(DateTime::ATOM)就是你想要的。
    • 另外,您可以只使用date("c"),因为如果未提供第二个参数,date() 将默认为time()
    • "Atom" 格式现在已被弃用(我认为是 php 7.2 起),但建议使用转义 T @Matteo 的解决方案效果很好。
    【解决方案2】:

    如果您需要插入不应解释的字符,请在其前面加上反斜杠:

    $time = date("y-m-d\TH:i:s", time());
    

    【讨论】:

      【解决方案3】:

      您可以分别格式化日期和时间部分,然后用"T" 连接这两个部分:

      <?php
       $time = time(); 
       $time = date( "y-m-d",$time )."T".date( "H:i:s", $time );
      ?>
      

      【讨论】:

        【解决方案4】:

        DATE_ATOM 是针对这种格式提供的:

        $theStart_date = date(DATE_ATOM, strtotime($start_date));
        

        输出:

        2013-04-10T09:10:30-04:00
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-05-24
          • 1970-01-01
          • 2011-12-03
          • 2019-02-17
          • 2015-11-28
          • 2011-01-19
          相关资源
          最近更新 更多