代码之家  ›  专栏  ›  技术社区  ›  shin

使用php或mysql查找以分钟为单位的时差

  •  1
  • shin  · 技术社区  · 15 年前

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

    例如

    start_time 13:00
    
    finish_time 14:40
    

    条目的格式始终为HH:MM。

    最好的方法是什么?

    6 回复  |  直到 15 年前
        1
  •  8
  •   Alan Haggai Alavi    15 年前

    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;
    
    ?>
    
        2
  •  2
  •   Cory    15 年前

    前任。

    <?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.
    ?>
    
        3
  •  1
  •   chigley    15 年前

    如果需要函数,则可以在单个脚本中多次执行此类计算:

    /**
     * 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() 函数(向上取整)以避免任何十进制答案。

        4
  •  0
  •   cryo28    15 年前

    如果我们谈论的是PHP,PHP中的时间表示为unixtime,即自epoch(1970年1月1日)以来的秒数。所以你只需要从一个时间到另一个时间的子结构,你就会得到以秒为单位的差异。

        5
  •  0
  •   Hammerite    15 年前

    好吧,假设有两个HH:MM格式的字符串; $time1 $time2 说吧。我假设 $时间1 $时间2 $时间1 在之后 ,在这种情况下,我会假设 $时间2 是后天吗 $时间1

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