PHP strtotime 给出错误的结果



这一行PHP曾经在日期27/12/2013中添加18 months,但它似乎不再起作用了:

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

它现在返回01/01/1970

我将不胜感激对此的任何想法。

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

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

27/12/2013 不是 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

从 strtotime 手册页:

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

您可能需要还原日期 echo date( "d/m/Y", strtotime( "2013/12/27 +18 month") );exit;

在这里测试:https://eval.in/83396

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

最新更新