当前日期无法在PHP中格式化

时间:2013-09-16 22:54:27

标签: php

我正在使用jquery datepicker,当选择今天的日期时,它无法转换为数据库查询所需的格式。

日期选择日期格式为' m-d-Y',今天显示为09-16-2013。 此部分正常工作,并且日期选择器正确显示今天的日期作为默认选择。

但是,我需要使用' Y-m-d'格式来查询数据库。当日期小于今天时,此工作正常。但是对于今天来说,它失败了,我得到了1969-12-31。

echo $enddt;

显示:2013年9月16日

我试过了:

echo date('Y-m-d', strtodate($enddt));
echo date('Y-m-d H:i:s', strtodate($enddt));

并且都不起作用。 如何格式化$ enddt以显示2013-09-16?

2 个答案:

答案 0 :(得分:3)

该功能实际上是strtotime(),而不是strtodate()

  

通过查看各个组件之间的分隔符来消除m / d / y或d-m-y格式的日期:如果分隔符是斜杠(/),则假设为美国m / d / y;而如果分隔符是破折号( - )或点(。),则假定为欧洲d-m-y格式。为避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD)日期或DateTime :: createFromFormat()。

由于日期字符串用短划线分隔,我们需要先将其转换为斜线,以使strtotime()将格式识别为mm/dd/yyyy

$enddt = '09-16-2013';
$enddt = str_replace('-', '/', $enddt);
echo date('Y-m-d', strtotime($enddt));

Demo!

答案 1 :(得分:2)

$enddt = DateTime::createFromFormat('m-d-Y', '09-16-2013');
echo $enddt->format('Y-m-d');

See it in action