我在我的MySQL数据库中有两个Time()保存:开始和结束。
我想在我的PHP代码中得到两次间隔的十进制结果。
for exemple, if :
start = 15:00:00
end = 16:00:00
result = 1
and if
start = 15:30:00
end = 16:00:00
result = 0,5
是否可以使用MySQL获得此结果?如果不可能,我怎样才能将时间格式转换为小数区间?
非常感谢您阅读我的问题。
答案 0 :(得分:1)
非常直接的解决方案是采用这两个值,将它们转换为时间,然后将其转换为数小时。
$start = "15:00:00";
$end = "16:00:00";
$result = (strtotime($end) - strtotime($start))/3600;
这会给你$result = 1
值15:30:00
和16:00:00
$result
将为0.5
。
答案 1 :(得分:1)
好,
所以我认为这很容易。只需按照以下步骤操作:
您需要将这些数字分开。制作3个变量。对于此示例,我们将使用$ hours,$ minutes,$ seconds(您可以通过使用REGEX分隔主时间来实现这些。我建议先阅读有关如何执行此操作的信息)
现在您有这些数字,例如:
$ start =" 15:30:00&#34 ;; $ start_hours =" 15" $ start_minutes =" 30&#34 ;; //或只是0 $ start_seconds =" 00&#34 ;; //或只是0
$ end =" 16:00:00&#34 ;; $ end_hours =" 15" $ end_minutes =" 00&#34 ;; //或只是0 $ end_seconds =" 00&#34 ;; //或只是0
所以......这就是你需要如何分开这些数字。
现在关于计算...
$ result_hours = $ end_hours - $ start_hours //你得到1
所以时间很容易......对于会议记录,我们需要考虑自己的时间。因为时间值总是在60,我们需要"百分比"这是在100。我们将解决这个问题:
$result_minutes = $end_minutes + $start_minutes; //you get 30.. which obviously is NOT what we want.. easily fixed by://
$right_minutes = 100 / 60 * $result_minutes; // gives you 50, which is great.
到目前为止,我们有1,50(如果你需要付出足够的努力,你可以简单地将50分乘以10 ...你将获得5分)
$result_seconds = $end_seconds + $start_seconds;
$right_seconds = 100 / 60 * $result_seconds;
现在我们需要意识到我们正在处理秒数,因此数字将是MINUTES的百分比而非小时数,我们可以使用以下方法解决此问题:
$best_seconds = 100 / 60 * (0.$right_seconds) //now we have all right.
$right = $right_minutes + $best_seconds;
$result = $result_hours.",".$right;
.........................
那应该是它。希望它能帮助你找到最佳解决方案,这就是我认为可行的方法。
尝试。更改。尝试。并做了。
祝你好运