1

我正在尝试在 PHP 中创建一个简单的 if/else 语句。像这样简单:

<?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";
}
?>

我现在这不起作用,因为我试图使用格式化的日期作为不起作用的变量。是否有另一种方法可以使用格式化的日期来确定当天的休息时间?

问候, 马蒂斯

4

4 回答 4

7
<?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 语句,您只需要您正在使用的方法的结果。

于 2015-01-22T14:00:34.577 回答
0

但是您不能将其用作变量

是的你可以。这工作正常:

<?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";
    }
?>
于 2015-01-22T14:01:13.450 回答
0

我不会将 DateTime 用于如此简单的事情。这就是我要做的:

$date = "2014-09-08 06:00:00";
$date = strtotime($date);
if (date('H', $date) < 12){
  echo "Morning";
} else {
  echo "Afternoon or evening";
}
于 2015-01-22T14:02:21.800 回答
0

也许不是最好的方法,但您也可以使用 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]);
于 2015-01-22T14:06:14.433 回答