我在获取/计算分钟时遇到了很大的问题。
情景:
我有一个表格,用户可以输入秒[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“ ,因为此计算适用于”分钟“。
感谢您帮我解决这个问题。
答案 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;
答案 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]
。检查获得此值的函数。