[英]php strtotime giving wrong result
這行PHP到27/12/2013
18 months
日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/Y
, Ymd
或dmY
),因此您需要重新格式化然后添加時間。 我建議您為此使用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.