我有两个数据输入,您可以输入开始时间和结束时间。
例如
start_time 13:00
finish_time 14:40
该条目将始终为HH:MM格式。
我想找时间差,在这种情况下是100分钟。
最好的方法是什么?
答案 0 :(得分:8)
#!/usr/bin/env php
<?php
$datetime1 = new DateTime('13:00');
$datetime2 = new DateTime('14:40');
$interval = $datetime1->diff($datetime2);
$hours = $interval->format('%h');
$minutes = $interval->format('%i');
echo $hours * 60 + $minutes;
?>
答案 1 :(得分:2)
您可以使用strtotime从字符串中获取时间戳,然后从时间戳中获取差异,之后转换为以分钟为单位的日期或时间很容易。
实施例
<?php
$start = "26 Sep, 2010 13:00";
$end = "26 Sep, 2010 14:40";
$timeStart = strtotime($start);
$timeEnd = strtotime($end);
$diff = ($timeEnd - $timeStart);
echo "Minutes : " . ($diff / 60) . "<br />";
echo "Date : " . date("j M, Y h:i:s a", $diff); //This would end up being the
//Years, months, days, hours, etc it took to complete the task.
?>
答案 2 :(得分:1)
如果你想要一个函数,那么你可以在一个脚本中多次进行这种计算:
/**
* get_time_difference
*
* @param string start time
* @param string finish time
* @return int time difference in minutes, rounded up
*/
function get_time_difference($start, $finish)
{
return ceil(abs((strtotime($finish) - strtotime($start)) / 60));
}
$start_time = '13:00';
$finish_time = '14:40';
$diff = get_time_difference($start_time, $finish_time);
echo $diff; // 100
请注意使用ceil()
函数(向上舍入)以避免任何小数答案。
答案 3 :(得分:0)
如果我们谈论PHP - PHP中的时间表示为unixtime - 自纪元(1970年1月1日)以来的秒数。因此,您需要从另一个时间中对一个时间进行子结构,您将在几秒钟内得到差异。
如果php中的时间是文本表示 - 您可以通过事先调用strtotime将其转换为unixtime。
答案 4 :(得分:0)
答案 5 :(得分:0)
好吧,我们假设您有两个HH:MM格式的字符串; $time1
和$time2
说。我将假设$time1
和$time2
在同一时区指的是同一天的时间(除非$time1
在$time2
之后,在这种情况下,我'我假设$time2
是$time1
之后的第二天。
$time1 = explode(':', $time1);
$time2 = explode(':', $time2);
$time1_hours = intval($time1[0], 10);
$time1_mins = intval($time1[1], 10);
$time2_hours = intval($time2[0], 10);
$time2_mins = intval($time2[1], 10);
$time1_mins_past_midnight = 60 * $time1_hours + $time1_mins;
$time2_mins_past_midnight = 60 * $time2_hours + $time2_mins;
$time_difference = ( $time1_mins_past_midnight > $time2_mins_past_midnight ) ?
1440 + $time2_mins_past_midnight - $time1_mins_past_midnight :
$time2_mins_past_midnight - $time1_mins_past_midnight;
现在$time_difference
包含时差,以分钟为单位。