2013-04-09 457 views
0

我正在用php開發一個網站。如何計算php中總分鐘的小時數,分鐘數和秒數?

我需要將作業添加到sql server 2008數據庫。

我在幾分鐘內完成工作時間,我想將它轉換爲H:i:s格式。

我使用這個代碼:

$hours = (int)($duration/60); 
    $minutes = $duration - ($hours * 60); 
    $time = $hours.":".$minutes; 

它正常工作與詮釋持續時間30,60,100,120等

,但如果持續時間是1.33或5.40比輸出應該是00:01:30或00:05:40分別。

我該怎麼做?

+0

我想你應該檢查輸入是否有'.',如果是,請使用[DateTime :: createFromFormat](http://www.php.net/manual/en/) datetime.createfromformat.php)。 – 2013-04-09 05:54:07

+0

檢查我的答案,它會幫助你 – 2013-04-09 06:01:44

+0

@Mausami檢查我的答案,它會給你預期的輸出 – Sabari 2013-04-09 06:12:03

回答

0

試試這個

<?php 
$duration = "1.33"; 
$hours = (int)($duration/60); 
$minutes = $duration - ($hours * 60); 

    date_default_timezone_set('UTC'); 
    $date = new DateTime($hours.":".$minutes); 
    echo $date->format('H:i:s'); 
?> 

輸出

00:01:33 
+0

看到這個http://www.php.net/manual/en/datetime.construct.php – alwaysLearn 2013-04-09 06:30:24

0

當你正在服用分鐘,這段代碼可以正常使用

$valueInMinutes = 135; 

echo intval($valueInMinutes/60); 
echo " h "; 
echo intval($valueInMinutes % 60); 

,並輸出

2 h 15 

如果你有管理的日子裏,只要改變一點點的代碼:

$value = 1505; 

echo intval($value/1440); 
echo " day(s) "; 
echo intval(($value % 1440)/60); 
echo " h "; 
echo intval($value % 60); 

會輸出

1 day(s) 1 h 5 
2

使用,如果你正在運行的DateInterval類PHP> 5.3.0:

$interval = new DateInterval('100 minutes'); 
$interval->format(%H:%I:%S); // returns string that you can send into your MYSQL database 
0

您可以用PHP做date功能:

$hours = (int)($duration/60); 
$minutes = $duration - ($hours * 60); 
$time = date("H:i:s", strtotime($hours.":".$minutes)); 
echo $time; 
date

更多信息可以在這裏找到http://php.net/manual/en/function.date.php

希望這會有所幫助:)

+0

謝謝sabari。但我想在幾小時,幾分鐘和幾秒鐘內轉換總分鐘數。意味着總分鐘數是5。40比它應該顯示爲00:05:40 – Mausami 2013-04-09 06:19:25

+0

@Mausami這將按照你想要的方式工作。你得到的輸出是什麼? – Sabari 2013-04-09 06:29:23

0

嘗試這種方式

$time = 5.40; 
$newtime = floatval($time); 
echo number_format($newtime,2,':',null); 
0

試試這個

echo $time = date("H:i:s", strtotime($hours)) . ":" . date("H:i:s", strtotime($minutes)); 

輸出

01:33:00 : 05:40:00 
+0

謝謝你的幫助。但我希望H:I:分鐘的格式不是小時,所以如果分鐘是1.33或5.40,它應該給出輸出爲00:01:33或00:05:40 – Mausami 2013-04-09 06:06:53

+0

@Mausami因爲你需要把'0'像'0.1.33'一樣時間。 ** ex。**'echo $ time = date(「H:i:s」,strtotime(「0。」。$ hours))。 「:」。日期(「H:i:s」,strtotime(「0。」。$分鐘));' – 2013-04-09 06:24:56

相關問題