在PHP中添加日期到$Date

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

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

$Date2 = $Date + 1

$Date3 = $Date + 2

等。

从而返回2010-09-182010-09-19等…

我试过了

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

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

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

587375 次浏览

如果你在使用PHP 5.3,你可以使用DateTime对象和它的add方法:

$Date1 = '2010-09-17';
$date = new DateTime($Date1);
$date->add(new DateInterval('P1D')); // P1D means a period of 1 day
$Date2 = $date->format('Y-m-d');

看一下DateInterval构造函数手册页,看看如何构造其他时间段来添加到你的日期中(2天将是'P2D', 3天将是'P3D',等等)。

如果没有PHP 5.3,你应该能够像你那样使用strtotime(我已经测试过了,它在5.1.6和5.2.10中都有效):

$Date1 = '2010-09-17';
$Date2 = date('Y-m-d', strtotime($Date1 . " + 1 day"));
// var_dump($Date2) returns "2010-09-18"

你所要做的就是像这样使用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

都必须使用以下代码:

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

您也可以使用以下格式

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

你可以这样堆叠更改:

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

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

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

$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";

使用变量表示天数

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

从PHP 5.2开始,你可以对DateTime对象使用modify:

http://php.net/manual/en/datetime.modify.php < a href = " http://php.net/manual/en/datetime.modify.php " > < / >

$Date1 = '2010-09-17';
$date = new DateTime($Date1);
$date->modify('+1 day');
$Date2 = $date->format('Y-m-d');

在加上月份时要小心……(在较小的程度上,几年)

这里有一个简单的解决方法。

<?php
$date = "2015-11-17";
echo date('Y-m-d', strtotime($date. ' + 5 days'));
?>

输出将是:

2015-11-22

解决方案已从这里找到- 如何在PHP中添加日期

以下是对您的查询的最简单的解决方案

$date=date_create("2013-03-15"); // or your date string
date_add($date,date_interval_create_from_date_string("40 days"));// add number of days
echo date_format($date,"Y-m-d"); //set date format of the result

要向某个日期添加特定天数,请使用以下函数。

function add_days_to_date($date1,$number_of_days){
/*
//$date1 is a string representing a date such as '2021-04-17 14:34:05'
//$date1 =date('Y-m-d H:i:s');
// function date without a secrod argument returns the current datetime as a string in the specified format
*/
$str =' + '. $number_of_days. ' days';
$date2= date('Y-m-d H:i:s', strtotime($date1. $str));
return $date2; //$date2 is a string
}//[end function]

这个作品。您可以使用它的天,月,秒,并重新格式化日期根据您的要求

public function reformatDate($date, $difference_str, $return_format)
{
return date($return_format, strtotime($date. ' ' . $difference_str));
}

例子

echo $this->reformatDate('2021-10-8', '+ 15 minutes', 'Y-m-d H:i:s');
echo $this->reformatDate('2021-10-8', '+ 1 hour', 'Y-m-d H:i:s');
echo $this->reformatDate('2021-10-8', '+ 1 day', 'Y-m-d H:i:s');

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

$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);