Tengo dos veces –
Por ejemplo: – la hora actual – 08:24 y la fecha 02/01/2013 en el formato dd/mm/aaaa
y tengo otra vez a las 13:46 y la fecha 31/12/2012 . Así que, ¿cómo puedo calcular la diferencia entre las 2 veces en horas usando PHP. (es decir, 42.63 horas)
Gracias de antemano.

El término que está buscando es «la fecha de la aritmética».

OriginalEl autor Ben Lind | 2013-06-02

6 Comentarios

  1. 6

    Convertir tanto a los valores de marca de tiempo, y luego restar para obtener la diferencia en segundos.

    $ts1 = strtotime(str_replace('/', '-', '02/01/2013 08:24'));
    $ts2 = strtotime(str_replace('/', '-', '31/12/2012 13:46'));
    $diff = abs($ts1 - $ts2) / 3600;
    Editado: strtotime analiza como m/d/a o d-de mi, tanto convertido / a antes del análisis
    se da la diferencia, pero su no me da de si la diferencia es positiva o negativa
    Usted puede simplemente quitar el abs() llame si necesita conservar el signo de la diferencia. ($ts1 - $ts2) / 3600
    sí, se que fue mi error que no me di cuenta de que

    OriginalEl autor jcsanyi

  2. 4

    Otra manera es usar PHP fecha relacionadas con las clases. El ejemplo siguiente utiliza DateTime::diff() para obtener una DateInterval objeto ($interval). A continuación, se utiliza el intervalo de propiedades para llegar al número total de horas en el intervalo.

    $a = DateTime::createFromFormat('H:i d/m/Y', '08:24 02/01/2013');
    $b = DateTime::createFromFormat('H:i d/m/Y', '13:46 31/12/2012');
    
    $interval = $a->diff($b);
    $hours    = ($interval->days * 24) + $interval->h
              + ($interval->i / 60) + ($interval->s / 3600);
    
    var_dump($hours); //float(42.633333333333)

    OriginalEl autor salathe

  3. 3

    Tengo una solución simple, de Intentar esta –

    echo getTimeDiff("10:30","11:10");
    
    function getTimeDiff($dtime,$atime)
        {
            $nextDay = $dtime>$atime?1:0;
            $dep = explode(':',$dtime);
            $arr = explode(':',$atime);
            $diff = abs(mktime($dep[0],$dep[1],0,date('n'),date('j'),date('y'))-mktime($arr[0],$arr[1],0,date('n'),date('j')+$nextDay,date('y')));
            $hours = floor($diff/(60*60));
            $mins = floor(($diff-($hours*60*60))/(60));
            $secs = floor(($diff-(($hours*60*60)+($mins*60))));
            if(strlen($hours)<2){$hours="0".$hours;}
            if(strlen($mins)<2){$mins="0".$mins;}
            if(strlen($secs)<2){$secs="0".$secs;}
            return $hours.':'.$mins.':'.$secs;
        }

    OriginalEl autor Pooja Yadav

  4. 1

    Si usted tiene las fechas como las marcas de tiempo (uso strtotime si es necesario), luego sólo restará ellos, opcionalmente tomar el valor absoluto, entonces divide a 3600 (número de segundos en una hora). Fácil ^_^

    OriginalEl autor Niet the Dark Absol

  5. 0

    Creo que el siguiente código es útil para obtener una idea acerca de cómo calcular la diferencia de tiempo con PHP

    function date_diff($date_1 , $date_2 , $format) {
        $datetime1 = date_create($date_1);
        $datetime2 = date_create($date_2);
    
        $diff = date_diff($datetime1, $datetime2);
    
        return $diff->format($format);
    }

    La función anterior es útil para calcular la diferencia entre dos tiempos así como las fechas. Las fechas son dados como argumentos con el formato de salida.

    El formato de salida son los siguientes:

    //’%Año %m %Mes el Día d %h Horas %Minutos %s Segundos’ => 1 Año 3 Meses 14 Días, 11 Horas y 49 Minutos 36 Segundos
    //’%Año %m %Mes el Día d’ => 1 Año 3 Meses 14 Días
    //’%m %Mes el Día d’ => 3 Meses 14 Días
    //’%Día d %h Horas’ => 14 Días, 11 Horas
    //’%Día d’ => 14 Días
    //’%h Horas %Minutos %s Segundos’ => 11 Horas 49 Minutos 36 Segundos
    //’%i Minutos a %s Segundos’ => 49 Minutos 36 Segundos
    //’%h Horas => 11 Horas
    //’%Días

    OriginalEl autor Codemaker

  6. 0

    Acaba de poner esto aquí, para cualquier persona que necesita para encontrar la diferencia entre dos fechas/hora en Hours, MinutesYSeconds!!

    $futureDate_raw = '12/13/2018'; //This is your finish date.
    $fdate = strtotime($futureDate_raw);
    
    $hours   = (($fdate - time()) / 3600;
    $mins    = (($fdate - time()) % 3600) / 60;
    $seconds = ((($fdate- time()) % 3600) % 60);

    OriginalEl autor Mohd Abdul Mujib

Dejar respuesta

Please enter your comment!
Please enter your name here