2010-09-16 96 views
128

$日期我有约会的形式返回一个MySQL查询的一部分2010-09-17添加天在PHP

我想变量$日期2设置为$ Date5如下:

$Date2 = $Date + 1

$Date3 = $Date + 2

等。

,使其返回2010-09-182010-09-19等等

我已经试过

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

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

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

+0

可能重复日期加入日期到一个变量日期](http://stackoverflow.com/questions/2692679/php-c通过添加日期到变量日期来计算未来日期) – Gordon 2010-09-16 14:36:41

回答

272

所有你必须做的是使用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 
+4

它'date'(“Ymd”,strtotime('2010-09-17 + 1 day'))' - >'2010-09-18','date(“Ymd” ,strtotime('2010-09-17 + 2天'))' - >'2010-09-19' – 2010-09-16 14:50:38

+0

刚试过这种方式,它的工作。我仍然不知道为什么我在开始日期前一天获得价值,当时我最初尝试了它。 – Istari 2010-09-16 15:30:56

+0

如果我有一个要添加天数的变量,该怎么办? – 2014-06-14 10:53:28

52

如果你使用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 constructor手册页看看,看看如何构建其他时期添加到您的日期(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" 
+0

对不起Daniel,但是webserver运行php 5.2.6,所以这不起作用 – Istari 2010-09-16 14:27:57

+1

DateTime :: construct使用相同的机制作为'strtotime'来解析日期,所以你也可以做'new DateTime(“+ 1 day $ date”)'这不需要5.3 – Gordon 2010-09-16 14:37:52

+0

我不是故意要这样做,但不知怎的,我做了=/ – Stevus 2017-12-22 17:17:26

0

所有要使用娄代码:

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

你不应该这样做,最终你会有闰秒的问题 – Nathan 2013-08-01 06:07:58

7

您还可以使用以下格式

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

可以叠加的变化是这样的:

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

注意这种方法的区别和其他答案中的一个:而不是连接值+1 day<timestamp>,您可以传递时间戳作为第二个参数米的strtotime

13

这里是一个小片段来展示最新的修改:

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

使用变量数天

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

从PHP 5.2,你可以使用带有DateTime对象修改:

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

在添加月份时要小心......(以及较小程度的年份)

+0

接受的答案只给出了15000 +天的答案,当你添加25000 +天时,这个答案给出答案.. – 2016-02-04 11:07:57

1

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

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

输出将是:

2015-11-22 

解决方案已在这里找到 - How to Add Days to Date in PHP

1

这里是您查询的最简单的解决方案

$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 
[PHP计算未来的