2011-11-17 189 views
49

我真的堅持在日期時間內添加X分鐘,在做了大量google'ing和PHP手冊閱讀之後,我似乎沒有得到任何地方。在PHP中添加日期時間分鐘

日期時間格式我是:

2011-11-17 05:05year-month-day hour:minute

分鐘將只會是一個數字從0到59

我想輸出是一樣的添加分鐘的輸入格式。

有人能給我一個工作代碼的例子,因爲我的企圖似乎沒有讓我到任何地方?

回答

101
$minutes_to_add = 5; 

$time = new DateTime('2011-11-17 05:05'); 
$time->add(new DateInterval('PT' . $minutes_to_add . 'M')); 

$stamp = $time->format('Y-m-d H:i'); 
+0

隨着日期:2011-11-18 00:00如果我添加了5分鐘,我得到2012-04-18 00:00因此。 ' $ time = new DateTime($ _ REQUEST ['start']); $ time-> add(new DateInterval('P'。$ duration。'M')); $ endTime = $ time-> format('Y-m-d H:i'); echo $ endTime; ' Applogies格式化,看來我今天無法工作^ _^ –

+0

@LukeB:對不起,忘了一個字符。修正了我的答案。 –

+2

DateTime比strtotime更好嗎? – bozdoz

12

您可以輕鬆地原生功能做到這一點:

strtotime('+59 minutes', strtotime('2011-11-17 05:05')); 

我建議DateTime類方法雖然剛剛發佈了由蒂姆。

20
$newtimestamp = strtotime('2011-11-17 05:05 + 16 minute'); 
echo date('Y-m-d H:i:s', $newtimestamp); 

結果是

2011-11-17五點21分00秒

現場演示是here

如果你不熟悉strtotime然而,你最好頭到php.net發現它是偉大的力量:-)

+1

最瞭解一個 – NaveenDA

54

PHP的DateTime類有一個有用的modify方法,它採用易於理解的文本。

$dateTime = new DateTime('2011-11-17 05:05'); 
$dateTime->modify('+5 minutes'); 

你也可以使用字符串插值或串聯對其進行參數:

$dateTime = new DateTime('2011-11-17 05:05'); 
$mintuesToAdd = 5; 
$dateTime->modify("+{$mintuesToAdd} minutes"); 
+6

最短最好! –

2

如果你想給一個包含分鐘的變量。

然後我認爲這是實現這個目標的好方法。

$minutes = 10; 
$maxAge = new DateTime('2011-11-17 05:05'); 
$maxAge->modify("+{$minutes} minutes"); 
2

一個遲到的回答的有點,但我會使用的方法是:

// Create a new \DateTime instance 
$date = DateTime::createFromFormat('Y-m-d H:i:s', '2015-10-26 10:00:00'); 

// Modify the date 
$date->modify('+5 minutes'); 

// Output 
echo $date->format('Y-m-d H:i:s'); 

或者在PHP> = 5.4

echo (DateTime::createFromFormat('Y-m-d H:i:s', '2015-10-26 10:00:00'))->modify('+5 minutes')->format('Y-m-d H:i:s') 
1

正如注意到布拉德和Nemoden其上面的答案,strtotime()是一個很好的函數。就我個人而言,我發現標準的DateTime對象對於許多用例來說過於複雜。例如,我只想在當前時間增加5分鐘。

我寫了返回的日期與一些可選參數字符串的函數:
1)時間:STRING |例如:「+5分鐘」(默認=當前時間)
2。)格式:String |例如:「Y-m-d H:i:s」(默認=「Y-m-d H:i:s O」)

顯然,這不是一個全功能的方法。只需一個快速簡單的功能來修改/格式化當前日期。

function get_date($time=null, $format='Y-m-d H:i:s O') 
{ 
    if(empty($time))return date($format); 
    return date($format, strtotime($time)); 
} 

// Example #1: Return current date in default format 
$date = get_date(); 

// Example #2: Add 5 minutes to the current date 
$date = get_date("+5 minutes"); 

// Example #3: Subtract 30 days from the current date & format as 'Y-m-d H:i:s' 
$date = get_date("-30 days", "Y-m-d H:i:s"); 
4

我認爲這對於處理時區也有幫助。我修改後的解決方案是基於@Tim Cooper的解決方案,上面是正確答案。

$minutes_to_add = 10; 
$time = new DateTime(); 
**$time->setTimezone(new DateTimeZone('America/Toronto'));** 
$time->add(new DateInterval('PT' . $minutes_to_add . 'M')); 
$timestamp = $time->format("Y/m/d G:i:s"); 

粗線,線3,是增加了。我希望這也可以幫助一些人。函數的

0

再舉一個例子來做到這一點:(改變時間和間隔格式,只要你喜歡根據this for function.date他們,this for DateInterval):

(我也寫一個alternate form of the below function

// Return adjusted time. 

function addMinutesToTime($dateTime, $plusMinutes) { 

    $dateTime = DateTime::createFromFormat('Y-m-d H:i', $dateTime); 
    $dateTime->add(new DateInterval('PT' . ((integer) $plusMinutes) . 'M')); 
    $newTime = $dateTime->format('Y-m-d H:i'); 

    return $newTime; 
} 

$adjustedTime = addMinutesToTime('2011-11-17 05:05', 59); 

echo '<h1>Adjusted Time: ' . $adjustedTime . '</h1>' . PHP_EOL . PHP_EOL; 
0

使用strtotime("+5 minute", $date);


實施例:

$date = "2017-06-16 08:40:00"; 
$date = strtotime($date); 
$date = strtotime("+5 minute", $date); 
echo date('Y-m-d H:i:s', $date); 
0

,不使用變量:

$yourDate->modify("15 minutes"); 
echo $yourDate->format("Y-m-d H:i"); 

與使用變量:

$interval= 15; 
$yourDate->modify("+{$interval } minutes"); 
echo $yourDate->format("Y-m-d H:i");