2011-11-29 136 views
4
$date = date('Y-m-d',current_time('timestamp', 0)); 

如何将$date更改为$date + 5 days将当前日期增加5天

PHP版本是5.2。

此代码不起作用:

$date_cur = date('Y-m-d',current_time('timestamp', 0)); 
echo $date_cur . ' <br>'; 
$date_cur_plus = date($date_cur, strtotime('+5 days')); 
echo $date_cur_plus; 

给我:

2011-11-29 
2011-11-29 
+3

您是否尝试过谷歌顺便说一句? – matino

+0

所有这些副本http://stackoverflow.com/search?q=add+days+php – Gordon

+0

可能的重复[将日期添加到日期](http://stackoverflow.com/questions/2332681/add - 天数到日期) – edorian

回答

15

你可以使用时间戳使用mktime()

喜欢的东西:

$date = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 5, date('Y'))); 

使用strtotime()比较快,但是我的方法仍有效,是在你需要做大量修改的情况下,灵活。另外,strtotime()无法处理含糊不清的日期。

编辑

如果你有5天添加到已经存在的日期字符串格式为YYYY-MM-DD,那么你可以把它分割成一个数组,并使用这些部件与mktime()

$parts = explode('-', $date); 
$datePlusFive = date(
    'Y-m-d', 
    mktime(0, 0, 0, $parts[1], $parts[2] + 5, $parts[0]) 
    //   ^Month ^Day + 5 ^Year 
); 
+0

如何从$ date_cur创建新变量+5天? – Jasper

+0

你从哪里得到'current_time()'方法?尝试使用'time()'。 –

+0

我GOOGLE了它,时间()给出了相同的结果。 – Jasper

1

使用strtotime

$date = date('Y-m-d', strtotime('+5 days')); 
+0

如何添加5天指定日期@phihag –

1
$dateplus5 = date('Y-m-d', strtotime('+5 days')); 
1

您可以使用

strtotime(“+5 days”) 

来得到当前日期加5天或

$targetDate = date($date, strtotime(’+5 days’)); 
19
$date = date('Y-m-d', strtotime('+5 days')); 
+0

的strtotime不为我工作 – Jasper

+4

什么意思?这是一个PHP标准函数,它必须工作... – matino

+0

我的意思是日期($ date_cur,strtotime('+ 5 days'));给出了相同的结果,因为$ date_cur – Jasper

1

strtotime()是非常好的。它可以让你做到以下几点:

$startDate = 'now'; // or choose a certain date you want/have 
$startDate = '2013-02-14'; 
$intervals = array(
    '', 
    '+ 5 days', 
    '+ 31 days', 
    '+ 3 months', 
    '+ 2 years + 2 days' 
); 
foreach($intervals as $interval) { 
    $combinedDate = $startDate . ' ' . $interval; 
    var_dump($combinedDate . ' => ' date('Y-m-d', strtotime($combinedDate))); 
} 

与结果:

现在=> 1360334498 = 2013年2月8日

现在+ 5天=> 1360766498 = 2013-02 -13

现在+ 31天=> 1363012898 = 2013年3月11日

现在+ 3个月=> 1368020498 = 2013年5月8日

现在+2年+ 2天=> 1423579298 = 2015年2月10日

或:

2013年2月14日=> 1360792800 = 2013年2月14日

2013年2月14日+ 5天=> 1361224800 = 2013年2月19日

2013年2月14日+ 31天=> 1363471200 = 2013年3月17日

201 14年3月2日+ 3个月=> 1368478800 = 2013年5月14日

2013年2月14日+2年+ 2天=> 1424037600 = 2015年2月16日

0

我用这个:

$date = strtotime("+1 day", strtotime("2007-02-28")); 
echo date("Y-m-d", $date); 

它的工作现在。

3

面向对象的风格:

<?php 
    $date = new DateTime('now'); 
    $date->add(new DateInterval('P5D')); 
    echo $date->format('Y-m-d') . "\n"; 
?> 

程序风格:

<?php 
    $date = date_create('2016-01-01'); 
    date_add($date, date_interval_create_from_date_string('5 days')); 
    echo date_format($date, 'Y-m-d'); 
?> 
+0

@matino有最好的程序上的答案,但我非常喜欢这个OOP。 – Prikkeldraad

0

难道不应该是这样吗?

$date_cur = date('Y-m-d', current_time('timestamp', 0)); 
echo $date_cur . ' <br>'; 
$date_cur_plus = date('Y-m-d', strtotime('+5 days', current_time('timestamp', 0))); 
echo $date_cur_plus; 
0

如果日期已经存在,你可以使用此代码:

$tartDate = date("m/d/Y", strtotime("+1 Day", strtotime($Date)));