eek
eek

Reputation: 93

How to convert hh:mm:ss to minutes

I have a time column $data['Time'] (hh:mm:ss) and I need to convert it to minutes. How can I do this? When I am writing like this:

$avg = ($data['Kilometers'] / $data['Time']) * 60;

I have this error

Warning: Division by zero in ... on line ..

Upvotes: 6

Views: 31822

Answers (7)

Alban Kaperi
Alban Kaperi

Reputation: 625

If hh:mm:ss is a string you can try this which is tested and it works:

 $hour=substr($string, 0,1);// we get the first two values from the hh:mm:ss string
 $hour=(int)$hour;
 $hourtomin=$hour*60;// after we have the hour we multiply by 60 to get the min
 $min=substr($string, 3,4);//now we do a substring 3 to 4 because we want to get only the min, and we don't want to get the : which is in position 2
 $min=(int)$min;
    
 $totalmin=$hourtomin+$min;// we just do a simple sum to calculate all the min
 echo $totalmin;

Upvotes: 1

Erlang Parasu
Erlang Parasu

Reputation: 363

function hourMinute2Minutes($strHourMinute) {
    $from = date('Y-m-d 00:00:00');
    $to = date('Y-m-d '.$strHourMinute.':00');
    $diff = strtotime($to) - strtotime($from);
    $minutes = $diff / 60;
    return (int) $minutes;
}

echo hourMinute2Minutes('01:30'); // returns 90

Upvotes: 0

Fallen
Fallen

Reputation: 4565

$time    = explode(':', $data['Time']);
$minutes = ($time[0] * 60.0 + $time[1] * 1.0);
$avg     = $minutes > 0 ? $data['Kilometers'] / $minutes : 'inf'; // if time stored is 0, then average is infinite.

Another way to convert the timestamp to minutes is,

$time    = date('i', strtotime($data['Time']));

Upvotes: 8

pankaj
pankaj

Reputation: 1906

you can do this very simple way.

$minutes=$item['time_diff'];
$hours =   sprintf('%02d',intdiv($minutes, 60)) .':'. ( sprintf('%02d',$minutes % 60));
return $hours;

Output will 09:10

Upvotes: 0

senthilkumar
senthilkumar

Reputation: 49

This is simple calculation use this one

    $time='01:02:10';
    $timesplit=explode(':',$time);
    $min=($timesplit[0]*60)+($timesplit[1])+($timesplit[2]>30?1:0);
    echo $min.' Min'  // 62 Min

Upvotes: 2

Dinesh Nagar
Dinesh Nagar

Reputation: 768

You can use following function 

<?php

function date2min ($hms) {

    $fromTime = strtotime($hms);

    $getMins = round(abs($fromTime) / 60,2);

    return $getMins;
}


$date   = date('H:i:s');  // $data['Time'] your desired time
$myResult = date2min($date);

and then use $myResult value according to your need.

?>

Upvotes: 1

SpencerX
SpencerX

Reputation: 5723

Try sometthin like this :

function minutes($time){
$time = explode(':', $time);
return ($time[0]*60) + ($time[1]) + ($time[2]/60);
}

LIVE DEMO

Upvotes: 15

Related Questions