我试图通过表单字段将实际小时数而不是时间本身插入到MySQL数据库中。例如,
$time1 = '00:00';
$time2 = '27:20';
$time3 = '00:45';
所以我可以检索不同的行,并且可以在需要时动态计算。通过搜索查询甚至在系统的其他区域。
当我尝试添加以上三次时,它没有按照我要找的方式给出结果
$total = strtotime($time1) + strtotime($time2) + strtotime($time3);
echo date('H:i:s', $total);
结果
14:16:44
虽然它应该像
28:05:00
我在MySQL表中使用了TIME
DATATYPE。我可以用作TEXT,但我也担心用户输入中发生的错误。我不必强迫用户插入任何特定格式,但他们可以按以下方式插入
27.20
27:20
或
1.5
1:30
我主要关心的是计算时间,用户输入可以是第二优先级,但如果可以实现则会很好。
无论如何,有没有想法或提示来实现这个目标?
答案 0 :(得分:1)
date()
需要UNIX格式的时间戳,即1970年1月1日00:00:00 UTC后的秒数(也是strtotime
提供的值)
你传递的结果是自1970年1月1日起增加了一系列的时间,而不仅仅是加起来的时间,所以(就date
而言)你正在生成一个随机的日期和时间,只打印时间(尝试打印$total
的日期,看看你得到了什么。)
由于你的时间存储在数据库中,一种可能性是让MySQL自己处理时间计算,例如:
SELECT ADDTIME('00:00',ADDTIME('27:20','00:45'))
将导致“28:05:00”。您可以将数据库字段设置为TIME
并直接通过SQL对其进行操作,并在PHP中将用户输入转换为可接受的TIME
值。
答案 1 :(得分:0)
如果您只对小时和分钟感兴趣,为什么不将该值存储为整数?只需将小时数乘以60即可。
您可以在PHP中处理转换。
或者,您也可以轻松地使用两个(非常小的)int字段。