PHP大于特定时间

19

我正在尝试编写一个简单的函数,根据一天中的时间输出两行不同的文本。当时间超过下午4点时,我希望它能够显示“次日递送将在第二天处理。”

我目前写的代码如下:

<?php

   $currentTime = time() + 3600;
   echo date('H:i',$currentTime);                 

?>   

然而,由于date函数返回一个字符串,我不确定如何使用IF语句来检查时间是否大于16:00。


1
你把“currentTime”向前移动一个小时看起来很奇怪。为什么这样做?我希望这不是因为时区的原因。 - mkilmanas
10个回答

33

应该这样做

if (((int) date('H', $currentTime)) >= 16) {
  // .. do something
}

由于 PHP 是弱类型语言,您可以省略 (int) 转换。

顺带一提:如果您将变量命名为 $currentTime,则不应添加 1 小时,因为这样它就不再是当前时间了,而是一个在未来一小时的时间。总之

if (date('H') >= 16) { /* .. */ }

11
if ($currentTime > strtotime('16:00:00')) {
    // whatever you have to do here
}

4

使用date('H:i:s')获取时间字符串并将其与“16:00:00”进行比较。


2
比较时间戳。
if (strtotime($date) < strtotime('16:00'))

1
你可以检查两个日期之间的差异:
<?php
$date1 = new DateTime("now");
$date2 = new DateTime("tomorrow");

var_dump($date1 == $date2);    //bool(false)
var_dump($date1 < $date2);    //bool(true)
var_dump($date1 > $date2);    //bool(false)
?> 

1
if(mktime(16, 0, 0) < time()) {
    echo "Next day delivery will be processed the following day.";
} else {
   echo "Will be processed today.";
}

1
也许有一个小的改进,如果您想要更高的准确性:
if ( (int) date('Hi', $currentTime)  > 1600 ) {
    // .. do something
}

0

试试这个

    function checkTime($time1,$time2)
{
  $start = strtotime($time1);
  $end = strtotime($time2);
  if ($start-$end > 0)
    return 1;
  else
   return 0;
}

$currentTime = time() + 3600;
$time1 = date('H:i',$currentTime);
$time2 = '16:00';

if(checkTime($time1,$time2))
   echo "First parameter is greater";
else
   echo "Second parameter is greater";

0

我在一天中使用了这个东西3次来更新某些内容...

$my_time= strtotime('now')-18000;//Now. My servers timezone is 5hrs ahead.
$my_day= strtotime('today')-86400; //today midnight central time.
$my_eve= $my_day +54000; //3pm central

if ($my_time > $my_day + 32400 && $my_time < $my_eve){

echo date('F j, Y, g:i a', $my_day + 32400); //9am

}elseif ($my_time > $my_eve){

echo date('F j, Y, g:i a', $my_eve); //3pm

}else{  

echo date('F j, Y, g:i a', $my_day);} //midnight

0
// Happy coding 
$isCurrentTimeGreater = strtotime('now') > strtotime('2022-10-13 08:15 am');

echo $timeDiff;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接