我正在从mysql检索datetime数据,从单行检索的数据是。
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,字符串在/Applications/MAMP/htdocs/kokaris/administrator/resources/library/models/users/users.php第21行
可能出了什么问题?
给定的解决方案对于程序方式来说非常好。
echo date('m-d-Y',strtotime($users['registerDate']));
然而,我想知道哪一个将是最好的可行的解决方案,上述过程的方式或面向对象的方式。
$date = new DateTime($users['registerDate']);
echo $date->format('d-m-Y H:i:s');
考虑到我将在foreach循环中使用代码,它可能循环超过100次。
不需要"date_format() ":
echo date('d-m-Y H:i:s', strtotime('2011-04-11 19:31:30'));
//results: 11-04-2011 19:31:30
您正在尝试使用一个函数/对象,它是DateTime类的一部分,而没有创建对DateTime类的引用。
关于过程格式化,请查看date()您要查找的是:
date('d-m-Y H:i:s', strtotime('2011-04-11 19:31:30'));
查看php-manual。但是,使用您自己提出的方法是非常好的,因为DateTime-object映射到用c编写的一些函数。
也是PHP Datetime 工作正常,因为date_format只是Date::format的别名,需要的正是你不想传递的东西(Datetime -object)。