PHP输出错误的日期

PHP输出错误的日期,php,html,forms,date,Php,Html,Forms,Date,我有以下代码: $date = substr($item[8], 7, 9); $date = str_replace('/', '-', $date); 此时,$date包含: 12-21-12 <---- December 21, 2012 很明显,有些东西在我们的生活中不正常 date('m-d-Y', strtotime($date)); 有人能帮我解决这个问题吗?日期必须是Y-m-d格式,而不是m-d-Y日期必须是Y-m-d格式,而不是m-d-Y如果您使用的是PHP5.3

我有以下代码:

$date = substr($item[8], 7, 9);
$date = str_replace('/', '-', $date);
此时,$date包含:

12-21-12  <---- December 21, 2012
很明显,有些东西在我们的生活中不正常

date('m-d-Y', strtotime($date));

有人能帮我解决这个问题吗?

日期必须是
Y-m-d
格式,而不是
m-d-Y
日期必须是
Y-m-d
格式,而不是
m-d-Y

如果您使用的是PHP5.3+,我鼓励您使用这个类

就你而言:

$date = DateTime::createFromFormat('m-d-y', '12-21-12');
echo $date->format('Y-m-d'); // 2012-12-21

如前所述,
strotime('12-21-12')
,因为日期格式对于月份和年份是不明确的。

如果您使用的是PHP5.3+,我建议使用该类

就你而言:

$date = DateTime::createFromFormat('m-d-y', '12-21-12');
echo $date->format('Y-m-d'); // 2012-12-21
如前所述,
strotime('12-21-12')
,因为日期格式对于月份和年份是不明确的。

删除

$date = str_replace('/', '-', $date);
解决问题。

删除

$date = str_replace('/', '-', $date);

解决了这个问题。

来自PHP docs for Strotime:为了避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD)日期或DateTime::createFromFormat()。我认为,除了您在答案中看到的,您也在使用欧式连字符进行美式日期:来自PHP docs for Strotime:为了避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD)日期或DateTime::createFromFormat(),你也在用欧式连字符进行美式约会:@JaredFarrish不,虽然它回答了问题,但这并不能解决问题;它被错误地发送到浏览器:根据规则,它可能格式不正确,但它也被错误地输出到
输入
。Jared是正确的。通过删除$date=str_replace(“/”、“-”、$date);问题解决了。@JaredFarrish不,虽然它确实回答了问题,但这并不能解决问题。等等,看看代码;它被错误地发送到浏览器:根据规则,它可能格式不正确,但它也被错误地输出到
输入
。Jared是正确的。通过删除$date=str_replace(“/”、“-”、$date);问题解决了。我想我没有PHP5.3,因为$date不会回显任何内容。@Jonathan,不幸的是。看看Matti提到的
strtime()
。好吧,do说这是处理这些日期歧义的正确方法。不过,在第二行删除无用的交换是真的。我想我没有PHP5.3,因为$date不会回显任何内容。@Jonathan,不幸的是。看看Matti提到的
strtime()
。好吧,do说这是处理这些日期歧义的正确方法。但实际上,在第二行删除无用的交换。