我有两个变量:
$start_time = '9:36';
$end_time = '12:47';
我如何计算两次之间的小时数并将它们存储在如下变量中:
$total_hours = 3;
我已经读过你需要先转换时间。此外也不需要约会,因为这一切都将在同一天。
任何帮助将不胜感激
答案 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)
strftime
date
获取小时(H)值 $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.php和http://php.net/manual/en/function.date.php
答案 4 :(得分:0)
你们为什么使它变得复杂?可以用单行代码完成:
abs((strtotime("11:00 AM") - strtotime("12:00 PM")) / 3600)
结果:
1
请注意,这假设两个时间都在同一天,但是如果两个时间都在不同的日期,则仍然可以使用。