我怎么得到分钟?

时间:2013-08-18 02:28:49

标签: php

我在获取/计算分钟时遇到了很大的问题。

情景:

我有一个表格,用户可以输入秒[5s,10s,25s,30s,60s]。我打电话给表“持续时间”

我已经“持续时间” [由分钟:秒组成],在我的数据库中 “1:5” [the最后输入]。然后我再插入一秒 “10s” ...

*格式为 分钟:秒

正确的输出应为: 1:15

目前的结果是: 0:15

我们看到了。我在计算分钟时遇到问题。我将展示的代码有助于减去秒数。但现在我需要修改它以添加秒数。

这是我的代码:

$duration = $_POST["duration"];

if(sizeof($bldg) == 1)
{
$total = sizeof($bldg)-1;
}
else
{
$total = sizeof($bldg)%2;
}

for($i=0; $i<sizeof($bldg);$i++)
{
          $result = mysql_query("SELECT fldTotalDuration FROM tbldata  WHERE  fldNetname = '".$network."' AND fldBldgName = '".$bldg[$i]."'  AND  fldWeek = '".$week."' AND fldMonth = '".$month."' ");

if(mysql_num_rows($result)==0)
{
$totalduration = "";
$seconds = 0;
$minutes = 0;

$computeSecMin = $seconds * $minutes; 
$subSecMin = $computeSecMin + $duration; 
$getMin = floor($subSecMin/60); 
$getSec = $subSecMin%60;
$totalduration = $getMin .":". $getSec; 
}
else{
$row = mysql_fetch_array($result);
$time = explode(":",$row['fldTotalDuration']);
$dur = explode(" ",$duration);

$computeSecMin = 60 * $time[0]; 
$subSecMin = $computeSecMin + $time[1] + $dur[0];
$getMin = floor($subSecMin/60); 
$getSec = $subSecMin%60; 
$totalduration = $getMin .":". $getSec; 
  }     
}

        $query = "INSERT INTO tbldata(fldNetname,fldBldgName,fldPlaylist,fldMonth,fldWeek,fldDuration,fldFrom,fldTo,fldTotalDuration) VALUES ('".$network."','".$bldg[$i]."','".$AdName."','".$month."','".$week."','".$duration."','".$from."','".$to."', '".$totalduration."')";
        mysql_query($query) or die (mysql_error()); 

$ duration =来自另一种形式,其组合框/下拉列表由5s,10s,25s,30s,60s组成。

目前,添加秒数是可以的,但分钟不好。

我的计算问题是 “$ getMin = floor($ subSecMin / 60);” 。结果是 “ 0“ 但它应该是 ”1“ ,因为此计算适用于”分钟“

感谢您帮我解决这个问题。

3 个答案:

答案 0 :(得分:0)

这是你要做的事情(抱歉,我更改了变量名称,你的名字并不明显):

$time = array(1,5);
$time_plus = '10s';

$time_plus = preg_replace('#\D#', '', $time_plus);
$minutes = $time [0] + (($time_plus + $time[1] >= 60) ? 1 : 0);
$seconds = ($time[1] + $time_plus) % 60;

echo $new_time = $minutes . ":" . $seconds; 

演示:http://codepad.org/eOBNeHrq

答案 1 :(得分:0)

您可能会发现使用mysql进行时间操作会更清洁您的应用程序。 AddTime()让您只需几秒钟和几分钟即可完成所需的操作。

SELECT ADDTIME('00:32.50','1:27.50');

给出结果:

01:59:01.000000

所以,这增加了32.5秒到1分27.50秒= 1分59秒和.01毫秒。

答案 2 :(得分:0)

实际上,你得到的就是你应该得到的。 如果

$time = [0, 5] 

$dur = [10, s]

然后

$computeSecMin = 60 * $time[0] = 60*0 = 0

$subSecMin = $computeSecMin + $time[1] + $dur[0] = 0 + 5 + 10 = 15

因此

$getMin = floor($subSecMin/60) = floor(15/60) = floor(0.25) = 0

在我看来,你正在计算它,结果确实是0分钟。 问题是你的持续时间变量。在我看来,你的程序得到了错误的价值。如果我理解,那应该是[1, 5]而不是[0,5]。检查获得此值的函数。