Php 如何将字符串格式化为日期

Php 如何将字符串格式化为日期,php,date,formatting,Php,Date,Formatting,好的,我正试图显示我从数据库中得到的日期 以下是我可以不使用任何格式显示的内容:2012-11-21 19:00:00 我想显示的是:2012-11-21 19:00:00 下面是代码 $expiryDate = date('Y/m/d', $data[0]->dinExpiry); $expiryTime = date('H:i', $data[0]->dinExpiry); 这就是我得到的错误 此外,它显示的日期也是错误的 提前感谢您的帮助简易解决方案 您说您可以显示2012

好的,我正试图显示我从数据库中得到的日期

以下是我可以不使用任何格式显示的内容:
2012-11-21 19:00:00

我想显示的是:
2012-11-21 19:00:00

下面是代码

$expiryDate = date('Y/m/d', $data[0]->dinExpiry);
$expiryTime = date('H:i', $data[0]->dinExpiry);
这就是我得到的错误

此外,它显示的日期也是错误的

提前感谢您的帮助

简易解决方案 您说您可以显示
2012-11-21 19:00:00
,而无需任何格式

因此,如果可以将任意$date显示为2012-11-21 19:00:00,为什么不将其子串:

$dateToDisplay = substr($date, 0, 11).'at '.substr($date, 11, 8);
并在19:00:00将$dateToDisplay显示为
2012-11-21

再多一点。。。 在不知道$data[0]->dinExpiry的输出的情况下回答这个问题很棘手。(我假设它提供了一个名为$date的变量)

正如@Marc B所说,从中获取1970的事实表明它不是一个有效的时间戳(提示:它是一个字符串),因此自Unix时代(1970年1月1日00:00:00 GMT)以来,它的计算时间为零秒

您可以将其转换为有效的时间戳,如下所示:

$expiryDate = date('Y-m-d', strtotime($date));
或与您的示例相匹配:

$expiryDate = date('Y-m-d', strtotime($data[0]->dinExpiry));
$expiryTime = date('H:i', strtotime($data[0]->dinExpiry));

$data[0]->dinExpiry
中的原始值是多少?我猜这不是一个有效的PHP时间戳值,因为您从中得到了1970,这意味着它被转换为0。
var\u dump($data[0]->dinExpiry))
。。。。内容是什么。。您试图显示的内容与它已经输出的内容基本相同?它与您的字符串完全不匹配。请将打印($data)var\u dump:string(19)“2012-11-21 19:00:00”时得到的结果写在这里。您太棒了!!结果是第一次。我一使用它,到家后就会把代码贴出来,以防有人想看。非常感谢你