用php或mysql查找分钟的时差

时间:2010-09-26 17:28:19

标签: php mysql

我有两个数据输入,您可以输入开始时间和结束时间。

例如

start_time 13:00

finish_time 14:40

该条目将始终为HH:MM格式。

我想找时间差,在这种情况下是100分钟。

最好的方法是什么?

6 个答案:

答案 0 :(得分:8)

您可以在diff中使用DateTime

#!/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包含时差,以分钟为单位。