2011-04-13 46 views
0

我从MySQL检索datetime数据检索的数据从一个单行。PHP日期时间不能正常工作

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到上线在给定/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循环内的代码,它可能会循环超过一百次。

+1

的第一个参数'DATE_FORMAT()'必须DateTime'的'一个实例。你正在向它传递一个字符串 – Phil 2011-04-13 05:39:40

+0

在PHP中,实例化一个对象并不是一个非常昂贵的操作,至少与你一直都在做的其他事情没有什么不同。纯粹出于性能考虑而选择面向对象的程序代码在诸如PHP之类的语言中很愚蠢。 – tdammers 2011-04-13 05:58:58

+0

@tdammers你确定在给定的条件下使用OOP方式可以吗?例如,如果我必须检索100条记录,考虑到它将初始化类100次,对于这样的条件,仅仅使用过程函数()是不好的? – 2011-04-13 06:06:41

回答

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 
4

您正在尝试使用一个功能/对象,而无需创建于DateTime类参考DateTime类的一部分。

对于程序格式化看看date()

2

你所寻求的是:

date('d-m-Y H:i:s', strtotime('2011-04-11 19:31:30')); 

有一个看看php手册。但是,使用你自己提出的方法是相当优良的,因为日期时间对象映射到用C编写的

一些功能

而且PHP日期时间正常工作,因为DATE_FORMAT只是日期::格式的别名,这正是需要你不希望传递(一个DateTime对象)是什么。

老实说,我们正在谈论的PHP ...