2017-01-12 71 views
-2

我在我的MySQL數據庫中有兩個Time()保存:開始和結束。MySQL&PHP:時間()到十進制小時

我想在我的PHP代碼中有兩次間隔的小數結果。

for exemple, if : 

start = 15:00:00 
end = 16:00:00 
result = 1 

and if 

start = 15:30:00 
end = 16:00:00 
result = 0,5 

使用MySQL可以得到這個結果嗎?如果不可能,請如何將時間格式轉換爲小數點間隔?

非常感謝您閱讀我的問題。

+0

你到目前爲止嘗試過什麼?你有沒有搜索任何指南?告訴我們你已經努力解決這個問題。 – Styphon

+0

嗯,我試過timediff SQL函數,但給出的結果是有點不連貫,所以我認爲這不是最好的情況下使用timediff。 然後我用TIMESTAMPDIFF,但結果總是0. 然後我創建了一個PHP函數來轉換日期,但我的函數並不真正好,因爲它不需要秒。這就是爲什麼我來這裏想知道是否有人有一個已經改善的解決方案。 – shqnks

回答

1

非常簡單的解決方案是採取這兩個值,將它們轉換爲時間,然後使其達到小時。

$start = "15:00:00"; 
$end = "16:00:00"; 

$result = (strtotime($end) - strtotime($start))/3600; 

這讓你$result = 1

對於價值15:30:0016:00:00$result0.5

+0

我將嘗試修改我的函數以使用strtotime,謝謝,我會告訴你它是否適用於我。 – shqnks

+0

這工作完美,非常感謝 – shqnks

+1

沒問題。我認爲我的解決方案是最簡單的方法,你可以在php – Bfcm

1

好吧,

所以我覺得這很容易。只需按照以下步驟操作:

  1. 您需要分開這些數字。製作3個變量。對於這個例子,我們將使用$小時,$分鐘,$秒(您可以通過使用REGEX分隔主要時間來實現這些),我推薦閱讀關於如何做到這一點的文章

  2. 現在你有這些數字示例如下:

    $ start =「15:30:00」; $ start_hours =「15」 $ start_minutes =「30」; //或者只是0 $ start_seconds =「00」; //或者只是0

    $ end =「16:00:00」; $ end_hours =「15」 $ end_minutes =「00」; //或者只是0 $ end_seconds =「00」; //或者只是0

所以......這是簡單的說明你需要如何區分這些數字。

  • 現在談談計數...

    $ result_hours = $ end_hours - $ start_hours //有你1

  • 小時左右易...對於我們需要考慮時間的自我分鐘。因爲時間值均爲60,我們需要「百分比」,這是100,我們會解決這個問題做的:

    $result_minutes = $end_minutes + $start_minutes; //you get 30.. which obviously is NOT what we want.. easily fixed by:// 
    
    $right_minutes = 100/60 * $result_minutes; // gives you 50, which is great. 
    

    到目前爲止,我們有1,50(如果你採取足夠的努力,你可以簡單地由50分開50你會得到5)

    $result_seconds = $end_seconds + $start_seconds; 
    $right_seconds = 100/60 * $result_seconds; 
    

    現在,我們需要認識到,我們正在處理秒,這樣的數量將是幾分鐘而不是時間的百分比,我們可以使用解決這個問題:

    $best_seconds = 100/60 * (0.$right_seconds) //now we have all right. 
    
    $right = $right_minutes + $best_seconds; 
    
    $result = $result_hours.",".$right; 
    

    。 ........................

    而且應該是這樣。希望它能幫助你找出最佳解決方案,這正是我認爲它可能奏效的原因。

    試試。更改。嘗試。並做了。

    祝你好運

    +0

    中做到這一點非常感謝,你的演示真的很有幫助和清晰。我已修改我的代碼以遵循您的步驟 – shqnks

    +0

    我們可以在tchat上發言嗎?我有另一個問題 – shqnks

    +0

    @shqnks是的,如何? –