2011-11-29 230 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)));