【问题标题】:php greater than certain timephp大于一定时间
【发布时间】:2011-09-16 06:22:32
【问题描述】:

我正在尝试制作一个简单的函数来根据一天中的时间输出 2 行不同的文本。我希望它在下午 4 点之后说 - 次日交付将在次日处理。

到目前为止我已经写了这个:

<?php

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

?>   

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

【问题讨论】:

  • 将“currentTime”移动一个小时看起来很奇怪。这是为什么?我希望它不是时区

标签: php time if-statement


【解决方案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)
?> 

【讨论】:

    【解决方案2】:

    我用它来更新一整天的东西 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
    

    【讨论】:

      【解决方案3】:

      如果您想要更高的准确性,也许会有一个小的改进:

      if ( (int) date('Hi', $currentTime)  > 1600 ) {
          // .. do something
      }
      

      【讨论】:

        【解决方案4】:

        试试这个

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

        【讨论】:

          【解决方案5】:
          if(mktime(16, 0, 0) < time()) {
              echo "Next day delivery will be processed the following day.";
          } else {
             echo "Will be processed today.";
          }
          

          【讨论】:

            【解决方案6】:

            比较时间戳。

            if (strtotime($date) < strtotime('16:00'))
            

            【讨论】:

              【解决方案7】:

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

              【讨论】:

                【解决方案8】:

                应该这样做

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

                由于 PHP 是弱类型,您可以省略 (int)-casting。

                作为旁注:如果您将变量命名为 $currentTime,则不应为其添加 1 小时,因为它不再是当前时间,而是未来一小时的时间 ;) 根本

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

                【讨论】:

                  【解决方案9】:
                  if ($currentTime > strtotime('16:00:00')) {
                      // whatever you have to do here
                  }
                  

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2014-11-07
                    • 2010-12-07
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-12-15
                    • 2017-04-06
                    • 2011-04-26
                    • 1970-01-01
                    相关资源
                    最近更新 更多