将天数添加到当前日期

19

添加一天到日期中,这样我就能将明天的日期存储在一个变量中。

$tomorrow = date("Y-m-d")+86400;

我忘了。

6个回答

38

date返回一个字符串,而你想要将86400秒添加到时间戳上。我认为你在寻找这个:

$tomorrow = date("Y-m-d", time() + 86400);

10
确实,这将因为夏令时而失败。你永远不应该像这样编写算术式。 - David Snabel-Caunt
同意这个程序没有考虑夏令时。我只是根据 OP 的意图回答了问题,他是否真正想要这样做取决于他自己的决定。 - casablanca
@Matchu的回答至少应该被接受为答案。 - luke_mclachlan
$date = 2.5 * 24 * 60 * 60; $newDate = date("Y-m-d H:i:s", time() + $date); 日期和时间 - undefined

36

我建议你探索一下 PHP 5.3 DateTime 类。它使得处理日期和时间变得更加容易:

$tomorrow = new DateTime('tomorrow');

// e.g. echo 2010-10-13
echo $tomorrow->format('d-m-Y');

此外,您可以在任何日期中使用+ 1 day语法:

$xmasDay = new DateTime('2010-12-24 + 1 day');
echo $xmasDay->format('Y-m-d'); // 2010-12-25

26

date()函数返回的是字符串,因此不能将其与整数相加。

首先使用strtotime函数构建明天的时间戳,这样不仅更简洁,而且更准确(参见Pekka的评论):

$tomorrow_timestamp = strtotime("+ 1 day");

然后,将其作为date调用的第二个参数:

$tomorrow_date = date("Y-m-d", $tomorrow_timestamp);

或者,如果您想要更加简洁的代码,那么这些内容可以全部压缩在一起。

$tomorrow = date("Y-m-d", strtotime("+ 1 day"));

4
更加友好的方式是使用 strtotime("+ 1 day"); 来构建时间戳,因为它考虑了夏令时的影响。+1 是指同样的效果,但不如使用 strtotime 更加准确。 - Pekka

6

简单易懂:

$tomorrow = strtotime('tomorrow');

1
整洁,但是以目前的形式,似乎不符合OP的要求 :/ 加入那个“date”调用,我们就可以开始了。 - Matchu

1
你可以使用 datetime 类的 add 方法。例如,你想要在当前日期和时间上添加一天。
$today = new DateTime();
$today->add(new DateInterval('P1D'));

进一步参考 php datetime add

希望这能帮到你。


0

我发现mktime()在这种情况下非常有用。例如:

$tomorrow=date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")+1, date("Y")));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接