将DATETIME转换为人类可读的日期

将DATETIME转换为人类可读的日期,datetime,php,Datetime,Php,我试图将DATETIME转换成人们可以实际使用的东西。这是日期: 2013-09-05 11:52:10 我正在使用: date("D, d M Y", '2013-09-05 11:52:10'); 正在变成: Thu, 01 Jan 1970 对我来说毫无意义。这应该是PHP代码吗?如果是,正确的答案是 date("D, d M Y", strtotime('2013-09-05 11:52:10')); 如果这与MySql有关,那么要使用的正确函数是(但是,您拥有的是无效的MySq

我试图将DATETIME转换成人们可以实际使用的东西。这是日期:

2013-09-05 11:52:10
我正在使用:

date("D, d M Y", '2013-09-05 11:52:10');
正在变成:

Thu, 01 Jan 1970

对我来说毫无意义。

这应该是PHP代码吗?如果是,正确的答案是

date("D, d M Y", strtotime('2013-09-05 11:52:10'));

如果这与MySql有关,那么要使用的正确函数是(但是,您拥有的是无效的MySql语法)。请澄清。

在将日期传递给date()之前,您需要将日期转换为时间戳

PHP的
date()
函数只能处理整数时间戳值;它无法将字符串作为输入处理

如果需要从一种字符串日期格式转换为另一种格式,应使用
DateTime::CreateFromFormat()
方法:

$dateObj = DateTime::CreateFromFormat($inputString);
$outputString = $dateObj->Format('D, d M Y');
但是,我建议您编写查询,使用MySQL的
UNIX\u TIMESTAMP()
函数将日期作为数字时间戳输入PHP,PHP的
date()
函数可以处理:

MySQL:

SELECT UNIX_TIMESTAMP(yourDateField) as yourDateField_timestamp FROM yourTable ...
然后,您可以完全按照自己的意愿编写PHP:

PHP:


第二个参数需要是一个int时间戳,
2013-09-05 11:52:10
?我非常讨厌
strottime()
函数。如果您知道输入格式,最好使用
DateTime::CreateFromFormat()
。但更好的是,只需使用MySQL的
UNIX\u TIMESTAMP()
函数,您就不必首先进行任何类型的转换。@Spudley:我也不喜欢它,但有一个严重的反驳:它是有效的。它被证明是有效的。作为一名工程师,我每次都必须把这一点放在个人偏好之上。其他两种选择都被记录在案,以便更好地工作。特别是
CreateFormFormat()
,它是专门为改进
strotime()
的缺点而创建的
strotime()
确实存在一些非常严重的问题,特别是在处理不明确的日期时(在本例中不是问题,但会让人绊倒)。它的速度也非常慢,因为它必须在启动之前确定要使用什么格式。如果您知道格式,请不要使用
strottime()
。如果您不知道格式,
strottime()
使用起来太冒险了。我真的很讨厌
strottime()
函数。如果您知道输入格式,最好使用
DateTime::CreateFromFormat()
。但更好的是,只需使用MySQL的
UNIX\u TIMESTAMP()
函数,就不必先进行任何类型的转换。
SELECT UNIX_TIMESTAMP(yourDateField) as yourDateField_timestamp FROM yourTable ...
$dateObj = date('D, d M Y', $row['yourDateField_timestamp']);