我有一个日期返回作为MySQL查询的一部分在形式2010-09-17。

我想设置变量$Date2到$Date5,如下所示:

$Date = $Date + 1

$Date = $Date + 2

从而返回2010-09-18,2010-09-19,等等。

我试过了

date('Y-m-d', strtotime($Date. ' + 1 day'))

但是这给了我$ date之前的日期。

以“Y-m-d”格式获取日期的正确方法是什么,以便它们可以在另一个查询中使用?


当前回答

下面是一个演示日期修改的小片段:

$date = date("Y-m-d");
//increment 2 days
$mod_date = strtotime($date."+ 2 days");
echo date("Y-m-d",$mod_date) . "\n";

//decrement 2 days
$mod_date = strtotime($date."- 2 days");
echo date("Y-m-d",$mod_date) . "\n";

//increment 1 month
$mod_date = strtotime($date."+ 1 months");
echo date("Y-m-d",$mod_date) . "\n";

//increment 1 year
$mod_date = strtotime($date."+ 1 years");
echo date("Y-m-d",$mod_date) . "\n";

其他回答

都必须使用以下代码:

$nday = time() + ( 24 * 60 * 60);    
echo 'Now:       '. date('Y-m-d') ."\n";    
echo 'Next Day: '. date('Y-m-d', $nday) ."\n";

你所要做的就是像这样用days代替day:

<?php
$Date = "2010-09-17";
echo date('Y-m-d', strtotime($Date. ' + 1 days'));
echo date('Y-m-d', strtotime($Date. ' + 2 days'));
?>

并且输出正确:

2010-09-18
2010-09-19

使用变量表示天数

$myDate = "2014-01-16";
$nDays = 16;
$newDate = strtotime($myDate . '+ '.$nDays.' days');
echo new Date('d/m/Y', $newDate); //format new date 

另一种选择是将日期字符串转换为时间戳,然后添加适当的秒数。

$datetime_string = '2022-05-12 12:56:45';
$days_to_add = 1;
$new_timestamp = strtotime($datetime_string) + ($days_to_add * 60 * 60 * 24);

在此之后,您可以使用PHP的各种日期函数之一将时间戳转换为日期对象或将其格式化为人类可读的字符串。

$new_datetime_string = date('Y-m-d H:i:s', $new_timestamp);

您也可以使用以下格式

strtotime("-3 days", time());
strtotime("+1 day", strtotime($date));

你可以这样堆叠更改:

strtotime("+1 day", strtotime("+1 year", strtotime($date)));

注意这种方法与其他答案之间的区别:您可以将时间戳作为strtotime的第二个参数传入,而不是将值+1 day和<timestamp>连接起来。