仅显示当前年份的日期格式


Date format showing only current year

$ddd=`1 December, 2014`;
$from = date("Y-m-d 00:00:00", strtotime($ddd));
echo $from.

返回2015-12-01 00:00:00而不是2014-12-01 00:00:00

有什么解决方案吗?

在 strtottime() 文档中,它说:

m/d/y 或 d-m-y 格式的日期通过查看 各个组件之间的分隔符:如果分隔符是 斜杠 (/),则假设为美国 m/d/y;而如果 分隔符是破折号 (-) 或点 (.),然后是欧洲 d-m-y 格式 是假设的。

为避免潜在的歧义,最好使用 ISO 8601 (YYYY-MM-DD) 日期或日期时间::createFromFormat() 如果可能。

因此,在使用 strtotime() 之前,应将$ddd转换为可接受的日期格式。更好的是,如果你有 PHP 5.3+,你可以使用 DateTime::createFromFormat() 函数:

$date = DateTime::createFromFormat('!d F, Y', '1 December, 2014');

其中$dateDateTime对象。

参考这个答案。它有效。

 $ddd='1 December 2014';
    $from = date("Y-m-d 00:00:00", strtotime($ddd));
    echo $from;

strtotime只能理解一组特定的格式。如果您的输入不是这些格式之一,它将尽力猜测,但如您所见,结果可能会有所不同。

试试这个:

 <?php
    $ddd = '1 December, 2014';
    $t = date_create_from_format("d M, Y",$ddd);
    $from = date_format($t,"Y-m-d 00:00:00");
    echo $from;
 ?>
<?php
$ddd='1 December 2014';
 $from = date("Y-m-d 00:00:00", strtotime($ddd));
 echo $from;
?>

演示,您应该从日期"2014 年 12 月 1 日"中删除","

"