MySQL& PHP:时间()到十进制小时

时间:2017-01-12 11:04:06

标签: php mysql time

我在我的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获得此结果?如果不可能,我怎样才能将时间格式转换为小数区间?

非常感谢您阅读我的问题。

2 个答案:

答案 0 :(得分:1)

非常直接的解决方案是采用这两个值,将它们转换为时间,然后将其转换为数小时。

$start = "15:00:00";
$end = "16:00:00";

$result = (strtotime($end) - strtotime($start))/3600;

这会给你$result = 1

15:30:0016:00:00 $result将为0.5

答案 1 :(得分:1)

好,

所以我认为这很容易。只需按照以下步骤操作:

  1. 您需要将这些数字分开。制作3个变量。对于此示例,我们将使用$ hours,$ minutes,$ seconds(您可以通过使用REGEX分隔主时间来实现这些。我建议先阅读有关如何执行此操作的信息)

  2. 现在您有这些数字,例如:

    $ 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

  3. 所以......这就是你需要如何分开这些数字。

    1. 现在关于计算...

      $ result_hours = $ end_hours - $ start_hours //你得到1

    2. 所以时间很容易......对于会议记录,我们需要考虑自己的时间。因为时间值总是在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;
      

      .........................

      那应该是它。希望它能帮助你找到最佳解决方案,这就是我认为可行的方法。

      尝试。更改。尝试。并做了。

      祝你好运