将DateTime转换为字符串PHP


225

我已经研究了很多站点,有关如何将PHP DateTime对象转换为String。我总是看到“从String到DateTime”而不是“从DateTime到String”

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

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

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

2
为什么要使用字符串函数处理DateTime?你想达到什么目的?
mgiuffrida 2012年

2
某种日期时间验证器?在php中
Netorica

Answers:


412

您可以使用该类的format方法DateTime

$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";
}

3
+1有效。您能否也请告诉我们在执行此转换之前如何检查空值(在同一行中)。谢谢!
瓦特

2
嘿@Watt,好点!我已经扩展了该示例以显示如何处理失败的案例。
rjz 2012年

3
您忘记了时区,而是使用$date->format('c')or $date->format('Y-m-d H:i:s Z')$date->format('Y-m-d H:i:s T')
Timo Huovinen 2015年

1
您需要能够使用什么using语句-> format?它说在Zend中遗漏了一些东西
化学家

1
$result = (new DateTime('2000-01-01'))->format('Y-m-d H:i:s');从PHP 5.4开始,您可以使用这种较短的形式。在此处观看:docs.php.net/manual/en/migration54.new-features.php 已添加实例化时对类成员的访问,例如(new Foo)-> bar()。
FFirmenich

17

我发现的最简单的方法是:

$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;

希望对您有所帮助。



15

有一些预定义格式date_d.php可与formatlike 一起使用:

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);

3
您可以使用DateTime常量(例如DateTime :: ISO8601),它使代码更易于阅读。
Anh-Tuan Mai

2

使用列表的更短方法。您可以对每个日期组件执行所需的操作。

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

2

它为我工作

$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);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.