2010-04-22 115 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");