将DateTime转换为字符串PHP

286
我已经在许多网站上进行了研究,想知道如何将PHP DateTime对象转换为字符串。我总是看到“字符串转换为DateTime”,而不是“DateTime转换为字符串”。 PHP DateTime可以被输出,但我想使用PHP字符串函数来处理我的DateTime。 我的问题是如何从以下代码开始将PHP dateTime对象转换为字符串:
$dts = new DateTime(); //this returns the current date time
echo strlen($dts);

2
你为什么想要使用字符串函数处理日期时间?你想要实现什么目标? - mgiuffrida
2
在PHP中有某种日期时间验证器吗? - Netorica
6个回答

527
您可以使用DateTime类的format方法: 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";
}

3
+1 运行正常。请问在进行转换之前,如何在同一行检查是否为 null?谢谢! - Watt
2
嘿@Watt,说得好!我已经扩展了示例,以展示如何处理失败的情况。 - rjz
3
дҪ еҝҳи®°дәҶж—¶еҢәдҝЎжҒҜпјҢ иҜ·дҪҝз”Ё $date->format('c') жҲ– $date->format('Y-m-d H:i:s Z') жҲ– $date->format('Y-m-d H:i:s T')гҖӮ - Timo Huovinen
1
你需要使用哪个 using 语句才能使用 ->format? Zend 上显示缺少某些东西。 - Chemist
1
自 PHP 5.4 开始,您可以使用这种更短的形式 $result = (new DateTime('2000-01-01'))->format('Y-m-d H:i:s');。请参阅:http://docs.php.net/manual/en/migration54.new-features.php。类成员访问实例化已经被添加,例如 (new Foo)->bar()。 - FFirmenich

25
echo date_format($date,"Y/m/d H:i:s");

22

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

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

希望它能帮上忙。


18

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

6
你可以使用 DateTime 的常数(例如 DateTime::ISO8601),这会使代码更易于阅读。 - Anh-Tuan Mai

3

使用列表的简洁方式。您可以对每个日期组件执行所需操作。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接