2010-04-22 83 views
8

我在看這篇文章,這是接近我所需要的: PHP - How to count 60 days from the add datePHP計算未來的日期,加入天可變日期

然而,在該職位的計算是將60天進行到當前日期。我需要做的是根據可變日期(而不是當前日期)計算日期。

事情是這樣的:

$my_date = $some_row_from_a_database; 
$date_plus_10_days = ???; 

任何人都知道該怎麼做?

感謝

+0

數據庫中的日期格式(時間戳)是什麼? – 2010-04-22 16:35:52

回答

26

你可以把東西 「+10天」 的部分之前:

strtotime("2010-01-01 +10 days"); 
+4

+1今天學到了新東西。謝謝。 OP可能要轉換回某些人類可讀的字符串。所以,像日期('Y-m-d',strtotime(「2010-01-01 +10天」)); – zaf 2010-04-22 16:36:08

+4

'strototime'需要一個時間戳作爲第二個參數,這個參數將作爲第一個參數的參考時間戳,所以如果OP從MySQL獲得了時間戳,他也可以使用'strtotime('+ 60天',$ timestampFromMySql);' – Gordon 2010-04-22 16:42:11

+0

完美 - 謝謝! – OneNerd 2010-04-22 16:42:42

6

使用DATE_ADD

http://www.php.net/manual/en/datetime.add.php

$my_date = new DateTime($some_row_from_a_database); 
$date_plus_10_days = date_add($my_date, new DateInterval('P10D')); 
+6

你應該提到,這隻能從PHP 5.3.0開始。 – 2010-04-22 16:34:31

1

我看你是從retriving數據一個數據庫。 如果你正在使用MySQL,你可以做到這一點的選擇:

例如:您所需要的表的最後日期,這個日期7天

select max(datefield) as ultimaf, DATE_SUB(max(datefield),INTERVAL 7 DAY) as last7 
from table 

你會很容易的使用,如果CURDATE()你想要今天的約會。

如果您需要之間的動態選擇的最後7天數:

select count(*) from table 
where DATE_SUB(CURDATE(),INTERVAL 7 DAY)<=datefield" 
2
date('Y-m-d H:i:s', strtotime("2014-11-24 06:33:39" +35 days")) 

這將讓中定義的格式計算的日期。

0

假設今天的日期是

date_default_timezone_set('Asia/Calcutta'); 
$today=date("Y-m-d"); 

,我可以在當前日期加10天爲如下:

$date_afte_10_days = date('Y-m-d', strtotime("$today +10 days")); 
0

你將不得不考慮strtotime()。我想像你的最終代碼會是這個樣子:

$dateVariable  = strtotime('2017-01-29');//your date variable goes here 
$date_plus_60_days = date('Y-m-d', strtotime('+ 60 days', $dateVariable)); 
echo $date_plus_60_days; 

如果你正在使用PHP> = 5.2我強烈建議你使用新的DateTime對象。例如,如下所示:

$date_plus_60_days = new DateTime("2006-12-12"); 
$date_plus_60_days->modify("+60 days"); 
echo $date_plus_60_days->format("Y-m-d");