1

I'm using the jquery datepicker, and when today's date is selected, it's failing to convert to the format I need for a database query.

datepicker 日期格式为“mdY”,因此今天显示为 09-16-2013。这部分工作正常,日期选择器正确地将今天的日期显示为默认选择。

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

echo $enddt;

显示:09-16-2013

我努力了:

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

两者都不起作用。如何格式化 $enddt 使其显示 2013-09-16 ?

4

2 回答 2

3

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

m/d/y 或 dmy 格式的日期通过查看各个组件之间的分隔符来消除歧义:如果分隔符是斜杠 (/),则假定为美式 m/d/y;而如果分隔符是破折号 (-) 或点 (.),则假定为欧洲 dmy 格式。为避免潜在的歧义,最好尽可能使用 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));

演示!

于 2013-09-16T22:57:06.440 回答
2
$enddt = DateTime::createFromFormat('m-d-Y', '09-16-2013');
echo $enddt->format('Y-m-d');

看到它在行动

于 2013-09-16T22:56:01.093 回答