代码之家  ›  专栏  ›  技术社区  ›  Alok

时间(仅限日期)比较

  •  1
  • Alok  · 技术社区  · 10 年前

    我需要比较两个不同的时间。两种格式:

    小时:分钟:秒

    没有一个是从 当前时间 。所以,不 strtotime DateTime 。我不希望在比较中以任何方式涉及日期。 这里的每个问题都以 结构时间 作为答案。

    我想要的是比较这两个时间,其中一个是从数据库中选取的( time )&一个我手动给出的字符串。

    例如: $A="00:00:00" (如果可以储存,请告知)。

    如果有什么办法,请告诉我?提前通知。。。

    6 回复  |  直到 10 年前
        1
  •  1
  •   Pattle Nil'z    10 年前

    您可以使用一个函数将时间转换为秒,然后根据结果进行比较

    function getTimeInSeconds($hours, $minutes, $seconds) {
        $totalSeconds = 0;
    
        //Add the numner of  hours in seconds
        $totalSeconds += ($hours * 60) * 60;
    
        //Add the number of minutes in seconds
        $totalSeconds += $minutes * 60;
    
        //Add seconds
        $totalSeconds += $seconds;
    
        return $totalSeconds;
    }
    
    $firsttime = getTimeInSeconds(8, 30, 14);
    $secondtime = getTimeInSeconds(10, 15, 06);
    
    //If second time is later than first time
    if($secondtime > $firsttime)
    {
    }
    
    //If first time is later than second time
    if($firsttime > $secondtime)
    {
    }
    
        2
  •  0
  •   SajithNair    10 年前

    如果时间是24小时格式,您可以简单地通过字符串比较进行比较

    $A="00:00:00"
    $B="13:00:00"
    
    if ($A > $B) {
      // do stuff
    }
    
        3
  •  0
  •   Rakesh Sharma    10 年前

    如果你不想使用 strtotime DateTime 我不确定它会给你正确的输出,因为它将作为字符串或int值进行比较,所以不可能计算精确的时间,所以最好使用php日期和时间函数

    For eg: $A="00:00:00" (it will be a string value)
    

    因此更好的输出将使用 strtotime() 做你的事

        4
  •  0
  •   Loopo    10 年前

    你可以将秒数相乘并进行比较。

    $timebits = explode(':',$A);
    $secondsDB = $timebits[2] + timebits[1]*60 + $timebits[0]*60*60
    

    然后以秒为单位与手动时间进行比较。

        5
  •  0
  •   Rajeev Ranjan    10 年前

    您可以使用 CAST( ) mysql查询中的函数

    SELECT * FROM table_name WHERE yourcolumn < CAST('05:00:00' AS time) 
    
        6
  •  0
  •   BenMorel Sonaten    10 年前

    如果您需要比较HH:MM:SS格式的时间是否相等,或者如果一个在另一个之前,并且不想使用strtotime函数,则应将所有时间转换为秒,并将其作为数字进行比较。

    简单示例:

    $a="01:30:08";
    $b="02:20:50";
    
    function toseconds($str){
      $array = explode(":",$str);
      $val  = $array[0] * 24 * 60;
      $val += $array[1] * 60;
      $val += $array[2];
      return $val;
    }
    
    print toseconds($a); // print a
    print " compare to ";
    print toseconds($b); // print b
    print " ";
    
    if($a > $b){
        print "b is before a";
    }else if ($b > $a){
        print "a is before b";
    }else if($b == $a){
        print "a and b are the same time";
    }