时间(仅与日期)比较

时间:2014-02-26 10:13:53

标签: php datetime strtotime

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

  

时:分:秒

这些都没有从当前时间中获取。所以,没有strtotimeDateTime。我不希望日期以任何方式参与比较。 这里的每个问题都以strtotime作为答案结束。

我想要的是比较这两次,其中一个是从DataBase中挑选出来的(类型为time)&一个我手动给出的字符串。

例如:$A="00:00:00"(如果能够以其他方式存储,请告诉我们)。

如果有办法做到这一点,请告诉我吗?Thnxx提前......

6 个答案:

答案 0 :(得分:1)

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

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)
{
}

答案 1 :(得分:0)

如果你不想使用strtotimeDateTime我不确定它会给你正确的输出,因为它会比较为字符串或int值,所以无法精确计算时间这么好用php日期和时间函数

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

因此,更好的输出将使用strtotime()转换这两个值并执行您的操作

答案 2 :(得分:0)

如果时间是24小时格式,您只需通过字符串比较

进行比较
$A="00:00:00"
$B="13:00:00"

if ($A > $B) {
  // do stuff
}

答案 3 :(得分:0)

您可以将秒数乘以并比较它们。

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

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

答案 4 :(得分:0)

如果您需要比较格式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";
}

答案 5 :(得分:0)

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

SELECT * FROM table_name WHERE yourcolumn < CAST('05:00:00' AS time)