将两个持续时间加在一起的聪明方法是啥? (JS/PHP/SQL)
Posted
技术标签:
【中文标题】将两个持续时间加在一起的聪明方法是啥? (JS/PHP/SQL)【英文标题】:What's the smart way to add two durations together? (JS/PHP/SQL)将两个持续时间加在一起的聪明方法是什么? (JS/PHP/SQL) 【发布时间】:2014-03-11 18:39:18 【问题描述】:我说的是两个持续时间(例如,“2 小时 4 分钟”+“7 小时 2 分钟”); 不是两个时间戳。我用谷歌搜索了一段时间,我能找到的都是关于计算日期之间的差异。
我正在使用 SQL、php 和 javascript;我的数据库有一个事件列表及其持续时间,我希望能够从SELECT
语句中总结总持续时间。显而易见的解决方案是对时间进行子串化,比如
total secs = first two chars*60*60 + second two chars*60 + last two chars
然后将总秒数乘以 60*60
以得到十进制小时的持续时间,将其向下舍入并将余数保留为 HH:mm
... 但这似乎很混乱。我应该使用更清洁、更合适的解决方案吗?
【问题讨论】:
"但这看起来很乱" --- 它没有。 “为了澄清,信息存储在 mysql 的‘时间’字段中,格式为 HH:MM:SS。” --- 那你为什么不使用 mysql 呢? dev.mysql.com/doc/refman/5.5/en/… 添加2hours 31minutes + 3hours 6 seconds
很麻烦。在mysql中添加两个时间字段就像field1 + field2
一样简单
正如其他人所说,理想情况下将该值存储在时间字段中。使用 php,您可以读取记录并使用 /(\d1,2)/ 从字段中删除数字。您需要处理返回项目的数量例如:3天2小时31分钟+3小时6秒将返回5个值,2小时31分钟+3小时6秒返回4个值。
【参考方案1】:
您应该将字段“时间”更改为“整数”
【讨论】:
【参考方案2】:可以通过转换为通用单位(在本例中为分钟)来添加时间,添加分钟,然后转换回小时和分钟。
如果您有类似“2 小时 4 分钟”的字符串,您可以使用以下内容将其转换为分钟:
function stringToMinutes (s)
var a = s.match(/\d+/g);
return a[0]*60 + +a[1];
转换回小时和分钟,例如:
function minutesToString(m)
function addS(n) return n!= 1? 's' : '';
var hr = m / 60 |0;
var min = m % 60;
return hr + ' hour' + addS(hr) + ', ' + min + ' minute' + addS(min);
【讨论】:
以上是关于将两个持续时间加在一起的聪明方法是啥? (JS/PHP/SQL)的主要内容,如果未能解决你的问题,请参考以下文章