我正在从mysql中检索日期时间数据,从单行检索的数据是。
2011-04-11 19:31:30
我想在d-m-Y H:i:s
中重新格式化日期时间,因为我正在使用date_format()
以下代码正常运行。
$date = new DateTime($users['registerDate']);
echo $date->format('d-m-Y H:i:s');
但是,我不想仅仅为了重新格式化而采用面向对象的方式,因为我将使用foreach循环中的代码,这意味着我必须一次又一次地初始化DateTime类。
我尝试使用以下代码执行此过程。
$date = $users['registerDate'];
echo date_format($date, 'Y-m-d H:i:s');
上述代码对我不起作用,并返回以下错误。
警告:date_format()要求参数1为DateTime,字符串在第21行的/Applications/MAMP/htdocs/kokaris/administrator/resources/library/models/users/users.php中给出
可能出现什么问题?
给定的解决方案在程序方面完全正常。
echo date('m-d-Y',strtotime($users['registerDate']));
但是我想知道哪种是上述程序方式或OOP方式的最佳可行解决方案。
$date = new DateTime($users['registerDate']);
echo $date->format('d-m-Y H:i:s');
考虑到我将在foreach循环中使用代码,它可能会循环超过一百次。
答案 0 :(得分:7)
您不需要“date_format()”:
echo date('d-m-Y H:i:s', strtotime('2011-04-11 19:31:30'));
//results: 11-04-2011 19:31:30
答案 1 :(得分:4)
您正在尝试使用属于DateTime类的函数/对象,而不创建对DateTime类的引用。
有关程序格式,请查看date()
答案 2 :(得分:2)
您正在寻找的是:
date('d-m-Y H:i:s', strtotime('2011-04-11 19:31:30'));
看一下php-manual。但是,使用您自己提出的方法非常好,因为DateTime对象映射到用C编写的一些函数。
PHP Datetime 也正常工作,因为date_format只是Date :: format的别名, 完全要求你传递的内容(一个DateTime-object)。
老实说,我们正在谈论PHP ......