php strtotime给出了错误的结果

时间:2013-12-27 15:43:34

标签: php

这行PHP用于将18 months添加到日期27/12/2013,但它似乎不再起作用了:

echo date( "d/m/Y", strtotime( "27/12/2013 +18 month") );exit;

现在返回01/01/1970

我很感激对此有任何想法。

5 个答案:

答案 0 :(得分:3)

由于d/m/Y不是标准类型(标准为m/d/YY-m-dd.m.Y),因此您需要重新格式化它,然后添加时间。我建议您使用DateTime

$d = DateTime::createFromFormat( 'd/m/Y', '27/12/2013' );
$d->modify( '+18 month' );
echo $d->format( 'd/m/Y' );

答案 1 :(得分:1)

2013年12月27日不是PHP的有效格式。以下是有效格式列表。 http://www.php.net/manual/en/datetime.formats.php

http://www.php.net/manual/en/datetime.formats.date.php

您会看到,DD / MM / YYYY不是可接受的格式。

echo date( "d/m/Y", strtotime( "2013-12-27 +18 months") );

Output: 27/06/2015

答案 2 :(得分:0)

你需要恢复日期     回音日期(“d / m / Y”,strtotime(“2013/12/27 +18 month”));退出;

答案 3 :(得分:0)

来自the strtotime manual page

  

通过查看,可以消除m / d / y或d-m-y格式的日期   各个组件之间的分隔符:如果分隔符是a   斜线(/),然后是美国m / d / y;而如果   separator是短划线( - )或点(。),然后是欧洲d-m-y格式   假设。为避免潜在的歧义,最好使用ISO 8601   (YYYY-MM-DD)日期或DateTime :: createFromFormat()尽可能。

所以,“27/12/2013”​​永远不会出现在strtotime的争论中。您可以使用“27-12-2013”​​或“27.12.2013”​​或“2013-12-27”或“12/27/2013”​​......选择。如上所述,我会坚持使用ISO 8601(“2013-12-27”)。

答案 4 :(得分:0)

在此测试:https://eval.in/83396

echo date( 'd/m/Y', strtotime( "+18 months", strtotime("12/27/2013 ")) );
相关问题