PHP输出不正确的日期


PHP outputting incorrect date

我有这样的代码:

$date = substr($item[8], 7, 9);
$date = str_replace('/', '-', $date);

此时,$date包含:

12-21-12  <---- December 21, 2012

现在我正在尝试将日期输出为输入类型="日期"友好的格式,如:

<input type="date" name="date" value="<?php echo date('Y-m-d', strtotime($date)); ?>">

但是不能正常输出。

如果我将type="date"更改为type="text",我将看到以下输出:

1969-12-31

显然有些地方不对劲
date('m-d-Y', strtotime($date));
谁能帮我解决这个问题?

日期格式必须为Y-m-d,不能为m-d-Y

如果您使用的是PHP 5.3+,我建议您使用DateTime类。

在你的例子中:

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

strtotime('12-21-12')所述,因为日期格式在月份和年份方面是不明确的。

删除

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

解决问题