Я пытаюсь сделать простое утверждение if / else в PHP. Что-то простое, как это:
<?php
$time = 13;
if ($time < 12) {
echo "Morning";
} else {
echo "Afternoon or evening";
}
?>
Проблема в том, что значение, которое я получаю из базы данных, имеет неформатированный формат времени (например, 2014-09-08 06:00:00). Я могу отформатировать эту дату, используя:
$time->format('H');
Для удаления даты из дня, месяца и года. Но вы не можете использовать это как переменную. Вот что я пытаюсь сделать:
<?php $deliverytime = new DateTime('2014-09-08 06:00:00');
$deliverytime->format('H');
if ($deliverytime < 12) {
echo "Morning";
} else {
echo "Afternoon or evening";
}
?>
У меня сейчас это не работает, потому что я пытаюсь использовать форматированную дату в качестве переменной, которая не работает. Есть ли другой способ определить часть выходного дня, используя форматированную дату?
С Уважением,
Matthijs
<?php
$deliverytime = new DateTime('2014-09-08 06:00:00');
$hour = $deliverytime->format('H');
if ($hour < 12) {
echo "Morning";
} else {
echo "Afternoon or evening";
}
?>
$deliverytime->format()
это метод, который возвращает отформатированную дату, и вы должны хранить ее где-нибудь, чтобы использовать то, что возвращает этот метод, как показано в коде выше.
На самом деле, вы передаете весь объект в оператор if, вам нужен только результат используемого вами метода.
Я бы не использовал DateTime для чего-то такого простого.
Вот что я бы сделал:
$date = "2014-09-08 06:00:00";
$date = strtotime($date);
if (date('H', $date) < 12){
echo "Morning";
} else {
echo "Afternoon or evening";
}
Возможно, это не лучший способ, но вы также можете получить значение с помощью preg match:
preg_match('/[0-9]{4}\-[0-9]{2}-[0-9]{2} 0?([0-9]+)\:[0-9]{2}\:[0-9]{2}/', $date, $match);
$hour = intval($match[1]);
Но вы не можете использовать это как переменную
Да, ты можешь. Это отлично работает:
<?php
$deliverytime = new DateTime('2014-09-08 06:00:00');
$hour = (int) $deliverytime->format('H');
if ($hour < 12) {
echo "Morning";
} else {
echo "Afternoon or evening";
}
?>