私のテーブルには、mysqltime()
形式でフォーマットされた列があります。
それが1つの値であるとき、私はそれを最も近い15分に再配置したい
というphp変数に割り当てます$preRemainOt
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
いくつかのアドバイスの後、関数を 3 つのセクションに分けました
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
変数に代入する前に、さらにいくつかの手順があるため、そのような2つの手順も変更します。
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"
、ナンセンスを与える