1

我正在用 php 开发一个网站。

我需要将作业添加到 sql server 2008 数据库。

我以分钟为单位计算工作持续时间,我想将其转换为 H:i:s 格式。

我正在使用这段代码:

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

它适用于 int 持续时间 30,60,100,120 等。

但如果持续时间为 1.33 或 5.40,则输出应分别为 00:01:30 或 00:05:40。

我怎样才能做到这一点 ?

4

6 回答 6

2

如果您正在运行 PHP > 5.3.0,请使用 DateInterval 类:

$interval = new DateInterval('100 minutes');
$interval->format('%H:%I:%S');  // prep for MySQL database. 
于 2013-04-09T05:56:04.580 回答
1

试试这个

<?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
于 2013-04-09T06:28:39.303 回答
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
于 2013-04-09T05:55:15.583 回答
0

您可以使用 phpdate函数:

$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

希望这可以帮助 :)

于 2013-04-09T05:56:29.610 回答
0

试试这个方法

$time = 5.40;
$newtime = floatval($time);
echo number_format($newtime,2,':',null);
于 2013-04-09T05:56:53.670 回答
0

试试这个

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

输出

01:33:00 : 05:40:00
于 2013-04-09T06:00:05.973 回答