добавить час-минута к дате

73
11

может кто-нибудь помочь мне в проблеме, что я застрял в течение долгих часов, я пытаюсь добавить время, как в формате h:ia с часами и минутами в формате 01:00 (один час), 00:30 (30 минут), 02:00 (два часа) и т.п.. в php.

Поскольку у меня есть часы в формате, таком как ('00:30','01:00','01:30','02:00') до времени, которое у меня уже есть. я попробовал это

$interval="01:00";

$now=new DateTime('h:ia');

$time=($now,strtotime(+$interval,$now));

но он не работает. Любая помощь будет оценена.

спросил(а) 2013-06-25T15:03:00+04:00 7 лет, 5 месяцев назад
1
Решение
93

вы должны проверить документацию strtottime(), чтобы добавить 1 час просто использовать

strtotime("+1 hour");

вы также можете использовать time() + 60*60

Существует также метод в объекте DateTime, называемый " add ", который вы можете использовать.

Из руководства:

DateTime :: add-date_add - добавляет количество дней, месяцев, лет, часов, минут и секунд к объекту DateTime

Вы можете создать объект DateInterval и добавить интервал к exsiting объекта DateTime.

Для форматирования даты вы можете использовать метод format() для объекта DateTime.

Отредактировано:

Простой взрыв может также решить вашу проблему.

 $interval="01:00";
$xp = explode(":", $interval);
$time=time() + (int)$xp[0] * 60*60 + (int)$xp[1]*60;
echo date("h:ia", $time);

Или более объектно-ориентированный

$interval="01:00";
$now=new DateTime();
$now->add(new DateInterval("P0000-00-00T$interval:00"));
echo $now->format('h:ia');

Рабочая демонстрация

ответил(а) 2013-06-25T15:07:00+04:00 7 лет, 5 месяцев назад
82

Вы могли бы попробовать что-то вроде этого:

$interval = "01:00";
$yourInterval = new DateInterval('P0000-00-00T'.$interval.':00');
//Setting the date and seconds to "0"

$time = new DateTime('now');
//Or any other method to get your DateTime

$time->add($yourInterval);

Я думаю, что во всех случаях вы должны использовать DateTime и DateInterval, OR strtotime(), я не уверен в их смешении. Я предпочитаю использовать DateTime и DateInterval, потому что он больше ориентирован на объекты.


Во всех случаях я советую не взорваться на дату операции. Это очень опасно из-за многих проблем, которые вы не можете предсказать (например, бисекстильные секунды и т.д.)

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

ответил(а) 2013-06-25T15:21:00+04:00 7 лет, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема