Я хочу добавить 3 минуты к переменной даты / времени, которую я имею, но я не уверен, как это сделать. Я сделал переменную из строки следующим образом: (которая находится в формате даты RFC 2822 btw)
$date = 2011-10-18T19:56:00+0200
Я преобразовал эту строку в дату, используя следующую команду:
$time = date_format(DateTime::createFromFormat("Ymd\TH:i:sO", $date), "G:i")
Теперь я хотел бы добавить 3 минуты к этой переменной, но я не уверен, как это сделать. Раньше я использовал следующую команду в моем скрипте, но это относится к текущей дате / времени, поэтому я не уверен, как использовать это для моей временной переменной:
$currenttime = date('G:i', strtotime('+2 hours'));
Итак, как я могу добавить три минуты к переменной времени $?
echo $idate="2013-09-25 09:29:44"; $effectiveDate = strtotime("+40 minutes", strtotime($idate)); echo date("Ymd h:i:s",$effectiveDate);
Используйте второй параметр strtotime
для предоставления контрольного времени:
$date_rfc2822 = '2011-10-18T19:56:00+0200'; $dateTime = DateTime::createFromFormat("Ymd\TH:i:sO", $date_rfc2822); echo date('G:i', strtotime('+2 hours', $dateTime->getTimestamp()));
Поскольку вы используете объект DateTime уже, придерживайтесь его:
$time = DateTime::createFromFormat("Ymd\TH:i:sO", $date); $three_minutes = $time->add(new DateInterval('P2H')); ^^--two (2) hours (H)
Формат начинается с буквы P для «периода». Каждый период продолжительности представлен целым значением, за которым следует указатель периода. Если продолжительность содержит элементы времени, той части спецификации предшествует буква T.
http://www.php.net/manual/en/dateinterval.construct.php
При этом мое решение аналогичной проблемы заключается в следующем:
// pretend that $date is what you got from mysql // which is like 2013-02-12 23:08:17 echo "<br>"; echo $date; $time = DateTime::createFromFormat("Ymd H:i:s", $date); echo "<br>"; echo $time->format('Hi-s'); $time->add(new DateInterval('PT2H')); echo "<br>"; echo $time->format('Hi-s'); // Outputs: // 2013-02-12 23:08:17 // 23-08-17 // 01-08-17
Дело в том, чтобы добавить P
при использовании класса DateInterval
и T
перед записями времени. Для вашего случая вам нужно пойти с PT3M
для добавления 3 минут. Я пытался добавить 2 часа, а то, что я сделал, было $time->add(new DateInterval('PT2H'));
,
Если вы посмотрите на спецификации интервалов:
Y years M months D days W weeks. These get converted into days, so can not be combined with D. H hours M minutes S seconds
M
течение months
и M
течение minutes
. Вот почему перед временем существует T
По крайней мере, я хочу верить … »O_O
//set the date and time $start = '2017-01-01 14:00:00'; //display the converted time you want to add for ex. 1 hour and 20 minutes echo date('Ymd H:i:s',strtotime('+1 hour +20 minutes',strtotime($start)));