2010-09-16 76 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計算未來的