我有一个以2010-09-17形式返回的日期作为mySQL查询的一部分
我想将变量$ Date2设置为$ Date5,如下所示:
$Date2 = $Date + 1
$Date3 = $Date + 2
等等..
以便它返回2010-09-18,2010-09-19等...
我试过了
date('Y-m-d', strtotime($Date. ' + 1 day'))
但这给了我$Date之前的日期。
以" Y-m-d"格式获取日期的正确方法是什么,以便在其他查询中使用它们?
通过向可变日期添加天数来计算PHP的将来日期的可能重复
您所要做的就是使用days而不是day,如下所示:
$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
它也仅使用day正确输出... date("Y-m-d", strtotime(2010-09-17 + 1 day))-> 2010-09-18,date("Y-m-d", strtotime(2010-09-17 + 2 day))-> 2010-09-19
只是尝试这种方式,它的工作。我仍然不知道为什么我在开始尝试的第一天就获得了价值。
如果我要添加一个天数变量怎么办?
@Carlos echo date(" Y-m-d",strtotime($ Date。+。$ variable。days));
不,这种方法根本不起作用。它返回2004年的某个日期。
如果使用的是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"
抱歉,丹尼尔(Daniel),但是网络服务器运行php 5.2.6,所以这行不通
DateTime::construct使用与strtotime相同的机制来解析日期,因此您也可以执行new DateTime("+1 day $date"),这不需要5.3
我本来不是要拒绝投票的,但是我还是以某种方式做了= /
这是php 5.5+的实际答案
从PHP 5.2开始,您可以对DateTime对象使用Modify:
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');
添加月份...(在较小的程度上,几年)时要小心
接受的答案只会给出15000+天的答案,而当您添加25000+天时,此答案也会给出答案。
您还可以在DateTimeImmutable()上查询此内容,并且获得修改后的副本,而无需更改原始副本。
以下是演示日期修改的小片段:
$date = date("Y-m-d");
//increment 2 days
$mod_date = strtotime($date."+ 2 days");
echo date("Y-m-d",$mod_date) ."
";
//decrement 2 days
$mod_date = strtotime($date."- 2 days");
echo date("Y-m-d",$mod_date) ."
";
//increment 1 month
$mod_date = strtotime($date."+ 1 months");
echo date("Y-m-d",$mod_date) ."
";
//increment 1 year
$mod_date = strtotime($date."+ 1 years");
echo date("Y-m-d",$mod_date) ."
";
您也可以使用以下格式
strtotime("-3 days", time());
strtotime("+1 day", strtotime($date));
您可以通过以下方式堆叠更改:
strtotime("+1 day", strtotime("+1 year", strtotime($date)));
请注意,此方法与其他答案中的方法之间的区别:除了将值+1 day和并置之外,您只需传递时间戳作为strtotime的第二个参数即可。
在天数中使用变量
$myDate ="2014-01-16";
$nDays = 16;
$newDate = strtotime($myDate . '+ '.$nDays.'days');
echo newDate('d/m/Y', $soma); //format new date
这是您查询的最简单解决方案
$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
这里有一个简单的方法来解决这个问题。
$date ="2015-11-17";
echo date('Y-m-d', strtotime($date. ' + 5 days'));
?>
输出将是:
2015-11-22
从这里找到解决方案-如何在PHP中添加日期
所有人都必须使用以下代码:
$nday = time() + ( 24 * 60 * 60);
echo 'Now: '. date('Y-m-d') ."
";
echo 'Next Day: '. date('Y-m-d', $nday) ."
";
您不应该这样,最终,秒会出现问题