Добавление минут к дате времени в PHP

Я действительно застрял в добавлении X минут к дате времени, после того, как вы сделали много ручного чтения и ручного чтения, я, кажется, никуда не денусь.

Формат даты, который у меня есть:

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('Ymd H:i'); 
 $dateTime = new DateTime('2011-11-17 05:05'); $dateTime->modify('+5 minutes'); 
 $newtimestamp = strtotime('2011-11-17 05:05 + 16 minute'); echo date('Ymd H:i:s', $newtimestamp); 

результат

2011-11-17 05:21:00

Живая демо here

Если вы еще не знакомы с strtotime , вам лучше отправиться на php.net чтобы узнать, что это великая сила 🙂

Вы можете сделать это с помощью собственных функций:

 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, является дополнением. Надеюсь, это поможет некоторым людям.

Если вы хотите указать переменную, содержащую минуты.

Тогда я думаю, что это отличный способ добиться этого.

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

Немного позднего ответа, но метод, который я использовал бы:

 // Create a new \DateTime instance $date = DateTime::createFromFormat('Ymd H:i:s', '2015-10-26 10:00:00'); // Modify the date $date->modify('+5 minutes'); // Output echo $date->format('Ymd H:i:s'); 

Или в PHP> = 5.4

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

Как отметил Брэд и Немоден в своих ответах выше, strtotime () является большой функцией. Лично я обнаружил, что стандартный объект DateTime слишком сложный для многих случаев использования. Например, я просто хотел добавить 5 минут к текущему времени.

Я написал функцию, которая возвращает дату как строку с некоторыми необязательными параметрами:
1.) время: String | ex: «+5 минут» (по умолчанию = текущее время)
2.) формат: String | ex: "Ymd H: i: s" (по умолчанию = "Ymd H: i: s O")

Очевидно, что это не полностью признанный метод. Просто быстрая и простая функция для изменения / форматирования текущей даты.

 function get_date($time=null, $format='Ymd 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 'Ymd H:i:s' $date = get_date("-30 days", "Ymd H:i:s"); 

Еще один пример функции для этого: (изменяя формат времени и интервалов, но вы, как и они, должны соответствовать этому для функции.date , а это для DateInterval ):

(Я также написал альтернативную форму ниже функции .)

 // Return adjusted time. function addMinutesToTime( $dateTime, $plusMinutes ) { $dateTime = DateTime::createFromFormat( 'Ymd H:i', $dateTime ); $dateTime->add( new DateInterval( 'PT' . ( (integer) $plusMinutes ) . 'M' ) ); $newTime = $dateTime->format( 'Ymd 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('Ymd H:i:s', $date);