我需要比较两个不同的时间。两种格式:
时:分:秒
这些都没有从当前时间中获取。所以,没有strtotime
或DateTime
。我不希望日期以任何方式参与比较。
这里的每个问题都以strtotime
作为答案结束。
我想要的是比较这两次,其中一个是从DataBase中挑选出来的(类型为time
)&一个我手动给出的字符串。
例如:$A="00:00:00"
(如果能够以其他方式存储,请告诉我们)。
如果有办法做到这一点,请告诉我吗?Thnxx提前......
答案 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)
如果你不想使用strtotime
或DateTime
我不确定它会给你正确的输出,因为它会比较为字符串或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)