時間を保存する必要があるフィールドがあり、このフィールドのすべての値を追加して、正しい時間に変換する必要があります。たとえば、
1、5 分 45 秒は 5.45 として保存されます
2,120 分 1 秒は 120.01 として保存されます
3,89 分 19 秒は 89.19 として保存されます
=====
合計は次のようになります5.45+120.01+89.19=2 14.65 しかし、元の値とは異なります
この問題を解決する良い方法はありますか? たとえば、ユーザーが入力した時間をすべて変換することはできないと思います。これはより信頼性が高く、数値を合計するだけで直接保存できます。あなたも間違ってはいけません。
しかし、ユーザーが入力した値を秒に変換するにはどうすればよいでしょうか?
$input = 1234.5678; strtok((string)$input,'.'); $s = strtok((string)$input,'.') * 60 + strtok('.'); echo $s.'秒';
$input = 1234.5678; $s = strtok((string)$input,'.') * 60 + strtok('.'); echo $s.'秒';
$input = 1234.5678; $s = strtok((string)$input,'.') * 60 + strtok('.'); echo $s.'秒';
最初にすべての値を秒に変換してから合計することをお勧めします。
$t = array('3H45.26','1H5.10','30.59');echo sumT($t); // 5H21.35function sumT($t){ $sum = 0; if($t){ foreach($t as $v){ $sum += getSecond($v); } } return tostr($sum);}function getSecond($str){ if(strstr($str,'H')==''){ $str = '0H'.$str; } $str = str_replace('H','.',$str); list($h, $m, $s) = explode('.', $str); return $h*3600+$m*60+$s;}function tostr($t){ $h = (int)($t/3600); $m = (int)($t%3600/60); $s = $t%3600%60; $h = $h>0? $h.'H' : ''; return $h.$m.'.'.$s;}
echo strtotime('034526') - strtotime(date('Y-m-d')),