【问题标题】:Convert DateTime to String PHP将日期时间转换为字符串 PHP
【发布时间】:2012-05-21 02:16:18
【问题描述】:

我已经研究了很多关于如何将 PHP DateTime 对象转换为字符串的网站。我总是看到“字符串到日期时间”而不是“日期时间到字符串”

PHP DateTime 可以回显,但我想用 PHP 字符串函数处理我的 DateTime。

我的问题是如何将 PHP dateTime 对象转换为从这种代码开始的字符串:

$dts = new DateTime(); //this returns the current date time
echo strlen($dts);

【问题讨论】:

  • 为什么要用字符串函数处理你的 DateTime?你想完成什么?
  • 某种日期时间验证器?在 php 中

标签: php datetime


【解决方案1】:

你可以使用DateTime类的format方法:

$date = new DateTime('2000-01-01');
$result = $date->format('Y-m-d H:i:s');

如果format 因某种原因失败,它将返回FALSE。在某些应用程序中,处理失败的情况可能是有意义的:

if ($result) {
  echo $result;
} else { // format failed
  echo "Unknown Time";
}

【讨论】:

  • +1 有效。您能否在进行此转换之前告诉如何检查 null (在同一行中)。谢谢!
  • 嘿@Watt,好点子!我已经扩展了这个例子来展示如何处理失败的案例。
  • 您忘记了时区,请改用$date->format('c')$date->format('Y-m-d H:i:s Z')$date->format('Y-m-d H:i:s T')
  • 你需要什么 using 语句才能使用 -> 格式?它说 Zend 中缺少一些东西
  • 自 PHP 5.4 起,您可以使用这个更短的形式 $result = (new DateTime('2000-01-01'))->format('Y-m-d H:i:s');。在此处观看:docs.php.net/manual/en/migration54.new-features.php 已添加实例化类成员访问,例如(new Foo)->bar().
【解决方案2】:

我找到的最简单的方法是:

$date   = new DateTime(); //this returns the current date time
$result = $date->format('Y-m-d-H-i-s');
echo $result . "<br>";
$krr    = explode('-', $result);
$result = implode("", $krr);
echo $result;

希望对你有帮助。

【讨论】:

    【解决方案3】:
    echo date_format($date,"Y/m/d H:i:s");
    

    【讨论】:

      【解决方案4】:

      date_d.php 中有一些预定义的格式可以与format 一起使用,例如:

      define ('DATE_ATOM', "Y-m-d\TH:i:sP");
      define ('DATE_COOKIE', "l, d-M-y H:i:s T");
      define ('DATE_ISO8601', "Y-m-d\TH:i:sO");
      define ('DATE_RFC822', "D, d M y H:i:s O");
      define ('DATE_RFC850', "l, d-M-y H:i:s T");
      define ('DATE_RFC1036', "D, d M y H:i:s O");
      define ('DATE_RFC1123', "D, d M Y H:i:s O");
      define ('DATE_RFC2822', "D, d M Y H:i:s O");
      define ('DATE_RFC3339', "Y-m-d\TH:i:sP");
      define ('DATE_RSS', "D, d M Y H:i:s O");
      define ('DATE_W3C', "Y-m-d\TH:i:sP");
      

      这样使用:

      $date = new \DateTime();
      $string = $date->format(DATE_RFC2822);
      

      【讨论】:

      • 你可以使用 DateTime 的常量(例如 DateTime::ISO8601),它使代码更容易阅读。
      【解决方案5】:

      使用列表的更短方式。您可以对每个日期组件做任何您想做的事情。

      list($day,$month,$year,$hour,$min,$sec) = explode("/",date('d/m/Y/h/i/s'));
      echo $month.'/'.$day.'/'.$year.' '.$hour.':'.$min.':'.$sec;
      

      【讨论】:

        【解决方案6】:

        它对我有用

        $start_time   = date_create_from_format('Y-m-d H:i:s', $start_time);
        $current_date = new DateTime();
        $diff         = $start_time->diff($current_date);
        $aa           = (string)$diff->format('%R%a');
        echo gettype($aa);
        

        【讨论】:

          猜你喜欢
          • 2018-03-29
          • 1970-01-01
          • 2015-09-17
          • 2011-09-23
          • 2019-05-15
          • 1970-01-01
          • 1970-01-01
          • 2022-08-18
          • 2017-08-31
          相关资源
          最近更新 更多