日期格式仅显示当前年份

时间:2015-01-13 06:39:26

标签: php date

$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

有没有解决方案?

4 个答案:

答案 0 :(得分:2)

strtottime()文档中,它说:

  

通过查看,可以消除m / d / y或d-m-y格式的日期   各个组件之间的分隔符:如果分隔符是a   斜线(/),然后是美国m / d / y;而如果   separator是短划线( - )或点(。),然后是欧洲d-m-y格式   假定。

     

为避免潜在的歧义,最好使用ISO 8601(YYYY-MM-DD)   date或DateTime :: createFromFormat()尽可能。

因此,在使用$ddd之前,您应该将strtotime()转换为acceptable date format。更好的是,如果你有PHP 5.3+,你可以使用DateTime::createFromFormat()函数:

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

其中$dateDateTime个对象。

答案 1 :(得分:1)

参考这个答案。它有效。

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

答案 2 :(得分:0)

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

demo你应该删除&#39;,&#39;自2014年12月1日起,&#39;

答案 3 :(得分:0)

strtotime 只能理解specific set of formats。如果您的输入不是这些格式之一,它会尽力猜测,但正如您所看到的,结果可能会有所不同。

试试这个:

 <?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;

 ?>