Добавление объектов к настоящему времени в PHP
Я действительно застрял с добавлением X минут в datetime, после выполнения большого количества google ' ING и PHP ручного чтения, я, кажется, не получаю ничего.
формат даты и времени у меня есть:
2011-11-17 05:05
:year-month-day hour:minute
минут для добавления будет просто число от 0 до 59
Я хотел бы, чтобы выход был таким же, как входной формат с добавленными минутами.
может кто-нибудь дать мне пример кода, как мои попытки не кажется меня куда-нибудь?
11 ответов:
$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');
класс PHP DateTime есть полезное изменить метод, который принимает в простой для понимания текст.
$dateTime = new DateTime('2011-11-17 05:05'); $dateTime->modify('+5 minutes');
вы также можете использовать строковую интерполяцию или конкатенацию для ее параметризации:
$dateTime = new DateTime('2011-11-17 05:05'); $minutesToAdd = 5; $dateTime->modify("+{$minutesToAdd} minutes");
вы можете сделать это с помощью собственных функций легко:
strtotime('+59 minutes', strtotime('2011-11-17 05:05'));
Я бы рекомендовал метод класса DateTime, хотя, только что опубликованный Тимом.
Я думал, что это поможет некоторым при работе с часовыми поясами. Мое модифицированное решение основано на решении @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, является добавлением. Я надеюсь, что это поможет некоторым людям, а также.
немного поздний ответ, но метод, который я бы использовал:
// 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')
Если вы хотите дать переменную, которая содержит минуты.
тогда я думаю, что это отличный способ достичь этого.
$minutes = 10; $maxAge = new DateTime('2011-11-17 05:05'); $maxAge->modify("+{$minutes} minutes");
Как отметили Брэд и немоден в своих ответах выше, strtotime () - отличная функция. Лично я обнаружил, что стандартный объект DateTime слишком сложен для многих случаев использования. Я просто хотел добавить 5 минут к текущему времени, например.
Я написал функцию, которая возвращает дату в виде строки с дополнительными параметрами:
1.) время: строка / пример: "+5 минут " (по умолчанию = текущее время)
2.) формат: String / ex: "Y-m-d H:i: s" (по умолчанию = " Y-m-d H:i:s О")очевидно, что это не полноценный метод. Просто быстрая и простая функция для изменения / форматирования текущей даты.
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");
использовать
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);
еще один пример функции для этого: (изменение форматов времени и интервалов, как вам нравится их в соответствии с этого для функцию.дата и это для DateInterval):
(Я также написал альтернативная форма функции ниже.)
// 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;