簡體   English   中英

PHP的strtotime給出錯誤的結果

[英]php strtotime giving wrong result

這行PHP到27/12/2013 18 months27/12/2013增加了18 months的時間,但似乎不再起作用:

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

現在返回01/01/1970

我對此表示感謝。

由於d/m/Y不是標准類型(標准將是m/d/YYmddmY ),因此您需要重新格式化然后添加時間。 我建議您為此使用DateTime

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

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

您需要還原日期,可能是echo date(“ d / m / Y”,strtotime(“ 2013/12/27 +18 month”));退出;

strtotime手冊頁

通過查看各個組成部分之間的分隔符,可以消除m / d / y或dmy格式的日期的歧義:如果分隔符為斜杠(/),則假定為美國m / d / y; 相反,如果分隔符是破折號(-)或點(。),則采用歐洲dmy格式。 為避免潛在的歧義,最好盡可能使用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”)。

在這里測試: https//eval.in/83396

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM