我真的堅持在日期時間內添加X分鐘,在做了大量google'ing和PHP手冊閱讀之後,我似乎沒有得到任何地方。在PHP中添加日期時間分鐘
日期時間格式我是:
2011-11-17 05:05
:year-month-day hour:minute
分鐘將只會是一個數字從0到59
我想輸出是一樣的添加分鐘的輸入格式。
有人能給我一個工作代碼的例子,因爲我的企圖似乎沒有讓我到任何地方?
我真的堅持在日期時間內添加X分鐘,在做了大量google'ing和PHP手冊閱讀之後,我似乎沒有得到任何地方。在PHP中添加日期時間分鐘
日期時間格式我是:
2011-11-17 05:05
:year-month-day hour:minute
分鐘將只會是一個數字從0到59
我想輸出是一樣的添加分鐘的輸入格式。
有人能給我一個工作代碼的例子,因爲我的企圖似乎沒有讓我到任何地方?
$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');
您可以輕鬆地原生功能做到這一點:
strtotime('+59 minutes', strtotime('2011-11-17 05:05'));
我建議DateTime類方法雖然剛剛發佈了由蒂姆。
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");
最短最好! –
如果你想給一個包含分鐘的變量。
然後我認爲這是實現這個目標的好方法。
$minutes = 10;
$maxAge = new DateTime('2011-11-17 05:05');
$maxAge->modify("+{$minutes} minutes");
一個遲到的回答的有點,但我會使用的方法是:
// 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')
正如注意到布拉德和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");
我認爲這對於處理時區也有幫助。我修改後的解決方案是基於@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,是增加了。我希望這也可以幫助一些人。函數的
再舉一個例子來做到這一點:(改變時間和間隔格式,只要你喜歡根據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;
使用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);
,不使用變量:
$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");
隨着日期: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格式化,看來我今天無法工作^ _^ –
@LukeB:對不起,忘了一個字符。修正了我的答案。 –
DateTime比strtotime更好嗎? – bozdoz