我的表有一个以 mysqltime()
格式格式化的列。
当它是一个值分配给名为 php 的变量时,$preRemainOt
我想将其重新排列到最近的 15 分钟
function roundTime($whatTime)
{
echo $whatTime."=>";
$roundTime= round ( strtotime($whatTime) / 60 * 15 );
echo date("H:i:s",$roundTime)."<br>";
return date("H:i:s",$roundTime);
}
$validOt =roundTime($preRemainOt);
<pre>
few bad result given from my try as follow:
$preRemainOt=>$validO
03:43:00=>06:55:45
01:05:00=>06:16:15
02:00:00=>06:30:00
but result shuld be as follow:
$preRemainOt=>$validO
03:43:00=>03:45:00
01:05:00=>01:00:00
02:00:00=>02:00:00
1.请给我一个想法。
2.如果我剩余的 ot value( $preRemainOt
) 超过 24 小时
ex:$preRemainOt='26:43:00'
会发生什么,这对 php 或 mysql 函数都无关紧要。
存储此类 ot 计算的最佳 mysql 数据类型是什么
update1
经过一些建议后,我将我的功能分为三个部分
function secondToTime($timeStamp)
{
$hours=intval($timeStamp / 3600);
$mins=intval($timeStamp / 60) % 60;
$secs=$timeStamp % 60;
return sprintf("%d:%02d:%02d",$hours, $mins, $secs);
}
function timeToSecond($time='00:00:00')
{
list($hours, $mins, $secs) = explode(':', $time);
$timeToSecond = ($hours * 3600 ) + ($mins * 60 ) + $secs;
return $timeToSecond;
}
function roundTime($interval='00:00:00')
{
$interval=timeToSecond($interval);
$interval = intval($interval) + 450;
$interval -= $interval % 900;
return secondToTime($interval);
}
那是因为在将列值分配给$preRemainOt
变量之前,还有几个步骤。我也改变了这两个步骤,
function timeDiff($lastTime,$firstTime)
{
$firstTimetime=timeToSecond($firstTime);
$lastTime=timeToSecond($lastTime);
$timeDiff=$lastTime-$firstTime;
return secondToTime($timeDiff);
}
function timeAdd($firstTime,$lastTime)
{
$firstTimetime=timeToSecond($firstTime);
$lastTime=timeToSecond($lastTime);
$timeAdd=2*$lastTime-$firstTime;;
return secondToTime($timeAdd);
}
所以我决定很难使用 select UNIX_TIMESTAMP()
。这将改变我的整个剧本。
在这种情况下 "%d:%02d:%02d"
胡说八道