如何在PHP中添加日期

时间:2012-07-09 15:55:12

标签: php date strtotime

  

可能重复:
  increment date by one month

我有以下代码来总结日期:

$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个月添加到日期?

3 个答案:

答案 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