我有以下代码来总结日期:
$var1 = date("d/m/Y");
$dia = substr($var1,0,2);
$mes = substr($var1,3,2);
$a_o = substr($var1,6,4);
$date = $a_o."-".$mes."-".$dia;
$new_date = strtotime( "+3 month", strtotime($date));
$new_date = date('d/m/Y', $new_date);
echo $new_date;
这是我在php.net上找到的正常方法,但是当我尝试将$var1
更改为其他日期时,例如,'21/07/2020'
结果为'31/01/1970'
,我不知道知道什么是错的。我试过很多表格但结果是一样的。
我该如何解决这个问题?或者还有哪些其他形式可以将X个月添加到日期?
答案 0 :(得分:4)
查看为5.3.0添加的date_add()函数。
DateTime :: add - date_add - 添加天数,月数,年数, DateTime对象的小时,分钟和秒
<?php
$date = new DateTime('2000-01-01');
$date->add(new DateInterval('P10D'));
echo $date->format('Y-m-d') . "\n";
?>
还为5.2.0添加了date_modify()功能。
DateTime :: modify - date_modify - 更改时间戳
<?php
$date = new DateTime('2006-12-12');
$date->modify('+1 day');
echo $date->format('Y-m-d');
?>
答案 1 :(得分:3)
你真的错了。 date()
为您提供格式正确的 STRING 。如果你想用日期做数学,你需要使用本机PHP日期/时间值,它们是简单的整数 - unix时间戳。
你正在使用unix时间戳(date()
中的默认值),将其转换为字符串,拆分该字符串,以不同的顺序重新组合字符串,然后将其转换回时间戳,然后将时间戳转换为不同的格式化字符串。这就像进行500英里的公路旅行,这样你就可以过马路了。
你不能简单地做任何理由:
$new_date = date('d/m/Y', strtotime('+3 month'));
并删除代码段中的所有其他内容?
答案 2 :(得分:-4)
在你的位置,我将在时间戳中改变日期,然后我将以秒为单位添加新日期(即3个月是60 * 60 * 24 * 90 = 7 776 000秒。)然后转换回来日期:P