计算2个时间戳之间的总小时数

时间:2011-11-09 07:05:00

标签: php function

我有两个变量:

$start_time = '9:36';
$end_time = '12:47';

我如何计算两次之间的小时数并将它们存储在如下变量中:

$total_hours = 3;

我已经读过你需要先转换时间。此外也不需要约会,因为这一切都将在同一天。

任何帮助将不胜感激

5 个答案:

答案 0 :(得分:2)

如果您只需要计算小时差异,您可以使用datetime class特别是函数date_parse_from_format,您只需要提供格式作为种子,然后您需要解析的内容给出计算差

修改1

你可以用更少的开销做点什么:

$start_time = '9:36';
$end_time = '12:47';
$today = date('Y-d-m');
$start = strtotime($today . ' ' . $start_time);
$end = strtotime($today . ' ' . $end_time);

$diff = floor(($end - $start) / 3600);

// or if you don't need the exact hours

$diff = ($end - $start) / 3600;

答案 1 :(得分:2)

  1. 转换时间字符串时间戳:strftime
  2. 采取差异,并
  3. 一个。使用date获取小时(H)值
    湾除以3600并且尽可能多的数字 需要
  4. $total_hours = (int)date('G', abs(strtotime($time2)-strtotime($time1)));

答案 2 :(得分:0)

这解决了您的问题:

$start = explode(':', $start_time);
$end = explode(':', $end_time);
$total_hours = $end[0] - $start[0] - ($end[1] < $start[1]);

请参阅this codepad以获取证明。

此解决方案假设两个小时都是同一天。

答案 3 :(得分:0)

见下文

$start_time = '9:36';
$end_time = '12:47';

$v =  strtotime($end_time) - strtotime($start_time);
echo date("h:i", $v);

输出

 03:11

http://php.net/manual/en/function.strtotime.phphttp://php.net/manual/en/function.date.php

答案 4 :(得分:0)

你们为什么使它变得复杂?可以用单行代码完成:

abs((strtotime("11:00 AM") - strtotime("12:00 PM")) / 3600)

结果:

1

请注意,这假设两个时间都在同一天,但是如果两个时间都在不同的日期,则仍然可以使用。