2014-02-26 99 views
1

我需要比較兩個不同的時間。這兩種格式:時間(僅限與非日期)比較

小時:分:秒

他們沒有從當前時間回升。所以,沒有strtotimeDateTime。我不希望日期以任何方式參與比較。 這裏的每個問題都以strtotime作爲答案。

我想要比較這兩個時間,其中一個是從數據庫中摘取(類型爲time)&一個我手動給字符串。

例如:$A="00:00:00"(如果可以存儲,否則請注意)。

如果有什麼辦法做到這一點,請你告訴我?Thnxx提前...

+0

您可以使用一個日期在此日期內 – k102

+0

比較倍就像我說的一個一次我給手動。雖然不是一個好的做法,但那段時間將會被硬編碼,我需要將它與DB中可能有所不同的時間進行比較。 – Gogo

回答

0

如果時間爲24小時格式,你可以簡單地通過字符串比較比較吧

$A="00:00:00" 
$B="13:00:00" 

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

我從數據庫中收到的數據是類型'時間' 所以不能真正比較 – Gogo

+0

我相信當php從您的數據庫讀取,'時間'類型將自動轉換爲字符串。正確? – SajithNair

+1

是的,你是好友;) – Gogo

0

,如果你不希望使用strtotimeDateTime我不知道它會爲您提供正確的輸出因爲它會比較字符串或INT值,因此無法計算準確的時間,以便更好地使用PHP的日期和時間函數

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

所以更好的輸出將被這兩個值使用strtotime()轉換,做你的東西

+0

對不起...不能使用它。這將是我最後的手段&將包括字符串拼接 – Gogo

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

謝謝..這也是一個辦法 – Gogo

0

你可以只需將秒數乘以並比較即可。

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

然後再比較你的手動時間,以秒爲單位。

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

可以在MySQL查詢使用CAST()功能

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

只是1個問題給你。你爲什麼低估了我所有的問題? – Gogo

+0

@shaktimaan如果我是,爲什麼我再回答你? –

+0

確定無論什麼好友...只是記得SO不適合這種有點東西。 &至於你的答案,我已經在問題下面的評論中與k102討論過了 – Gogo