2013-04-09 158 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

相关问题