php - добавить переменную 3 минуты к дате - PullRequest
1 голос
/ 18 октября 2011

Я хочу добавить 3 минуты к моей переменной даты / времени, но я не уверен, как это сделать.Я сделал переменную из строки следующим образом: (которая находится в формате даты RFC 2822)

$date = 2011-10-18T19:56:00+0200

Я преобразовал эту строку в дату с помощью этой команды:

$time = date_format(DateTime::createFromFormat("Y-m-d\TH:i:sO", $date), "G:i")

ТеперьЯ хотел бы добавить 3 минуты к этой переменной, но я не уверен, как.Ранее я использовал следующую команду в моем сценарии, но она применима к текущей дате / времени, поэтому я не уверен, как использовать ее для моей временной переменной:

$currenttime = date('G:i', strtotime('+2 hours'));

Итак, как можноЯ добавляю три минуты к переменной $ time?

Я пробовал это раньше:

$date = '2011-10-18T19:56:00+0200';
$time = DateTime::createFromFormat("Y-m-d\TH:i:sO", $date);
echo date('G:i', strtotime('+3 minutes', $time->getTimestamp()));

, но это дает текущее время с добавленными 3 минутами, он не использует переменную $ date..

И я попытался:

$time = DateTime::createFromFormat("Y-m-d\TH:i:sO", $date);
$time = $time->add(new DateInterval('P2H'));

Но тогда, когда я делаю

echo date_format($time, 'G:i');

, ничего не отражается ...

Любая помощь здесь?

Ответы [ 2 ]

5 голосов
/ 18 октября 2011

Вы можете просто использовать strtotime дважды:

$date = strtotime('2011-10-18T19:56:00+0200');
echo date('G:i', strtotime('+3 minutes', $date));
4 голосов
/ 18 октября 2011

вместо

$time = DateTime::createFromFormat("Y-m-d\TH:i:sO", $date);
$time = $time->add(new DateInterval('P2H'));

попробуй (для добавления 3 минуты)

$time = DateTime::createFromFormat("Y-m-d\TH:i:sO", $date);
$time->add(new DateInterval('PT3M'));

Во-первых, поскольку вы используете PHP-класс DateTime, вам не нужно присваивать вывод метода add переменной - он изменит DateTime, который вы передали в конструктор. Во-вторых, если вы вносите изменения во время, используя один и тот же класс, вы должны убедиться, что перед определением времени есть T. Для вашего примера DateInterval('P2H') недопустимо - это должно быть DateInterval('PT2H').

...