Heim  >  Artikel  >  Backend-Entwicklung  >  一个保存时间的字段如何存储数据

一个保存时间的字段如何存储数据

WBOY
WBOYOriginal
2016-06-13 11:59:51882Durchsuche

一个保存时间的字段怎么存储数据
有一个字段需要存储时间,并且需要把这个字段所有的值相加,然后换算成正确的时间。比如

1,5分钟45秒  存储为 5.45
2,120分钟01秒 存储为120.01
3,89分钟19秒  存储为89.19

=====

合计起来就是 5.45+120.01+89.19=214.65 但是和本来的数值不一样的

有没有什么好办法来解决这个问题呢,我觉得不能存储成这样,比如把用户输入的时间数全部转换成秒数存储到数据库,这样靠谱点,直接秒数相加就可以了。也不会出错。

但是怎么样把用户输入的数值转换成秒数呢
------解决方案--------------------

<br />        $input = 1234.5678;<br />        strtok((string)$input,'.');<br />        $s = strtok((string)$input,'.') * 60 + strtok('.');<br />        echo $s.'秒'; <br />

------解决方案--------------------
<br />$t = array('3H45.26','1H5.10','30.59');<br /><br />echo sumT($t); // 5H21.35<br /><br />function sumT($t){<br />	$sum = 0;<br />	if($t){<br />		foreach($t as $v){<br />			$sum += getSecond($v);<br />		}<br />	}<br />	return tostr($sum);<br />}<br /><br /><br />function getSecond($str){<br />	if(strstr($str,'H')==''){<br />		$str = '0H'.$str;<br />	}<br />	$str = str_replace('H','.',$str);<br />	list($h, $m, $s) = explode('.', $str);<br /><br />	return $h*3600+$m*60+$s;<br />}<br /><br />function tostr($t){<br />	$h = (int)($t/3600);<br />	$m = (int)($t%3600/60);<br />	$s = $t%3600%60;<br /><br />	$h = $h>0? $h.'H' : '';<br /><br />	return $h.$m.'.'.$s;<br />}<br />

------解决方案--------------------
要求用户将 3小时45分钟26秒 写作 034526 这不过分吧?比你的还简单
于是有
echo strtotime('034526') - strtotime(date('Y-m-d')), 
13526

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn