Foros del Web » Programando para Internet » PHP »

Saber el tiempo restante entre una fecha con hora y la actual

Estas en el tema de Saber el tiempo restante entre una fecha con hora y la actual en el foro de PHP en Foros del Web. Hola, les cuento el problema, en la base de datos tengo una fecha en un campo datetime, pongamos por ejemplo: 2009-01-27 13:50:00 Y quiero que ...
  #1 (permalink)  
Antiguo 20/01/2009, 13:54
Avatar de Falhor  
Fecha de Ingreso: diciembre-2005
Ubicación: Buenos Aires
Mensajes: 425
Antigüedad: 18 años, 4 meses
Puntos: 5
Saber el tiempo restante entre una fecha con hora y la actual

Hola, les cuento el problema, en la base de datos tengo una fecha en un campo datetime, pongamos por ejemplo: 2009-01-27 13:50:00

Y quiero que saque los dias, horas, minutos y segundos que faltan para ese instante.

Saludos.

Última edición por Falhor; 20/01/2009 a las 14:16
  #2 (permalink)  
Antiguo 20/01/2009, 15:10
Avatar de Falhor  
Fecha de Ingreso: diciembre-2005
Ubicación: Buenos Aires
Mensajes: 425
Antigüedad: 18 años, 4 meses
Puntos: 5
Respuesta: Saber el tiempo restante entre una fecha con hora y la actual

Bueno, ya lo logre, por si a alguno le interesa lo hice adaptando esta funcion a lo que queria:

Código PHP:
<?php

/**
 * this code assumes php >= 5.1.0. if using < 5.1, read
 * php.net/strtotime and change the condition for checking
 * for failure from strtotime()
 */

// $t1, $t2: unix times, or strtotime parseable
// $precision: max number of units to output
// $abbr: if true, use "hr" instead of "hour", etc.
function date_diff ($t1$t2$precision 6$abbr false) {
    if (
preg_match('/\D/'$t1) && ($t1 strtotime($t1)) === false)
        return 
false;

    if (
preg_match('/\D/'$t2) && ($t2 strtotime($t2)) === false)
        return 
false;

    if (
$t1 $t2)
        list(
$t1$t2) = array($t2$t1);

    
$diffs = array(
        
'year' => 0'month' => 0'day' => 0,
        
'hour' => 0'minute' => 0'second' => 0,
    );

    
$abbrs = array(
        
'year' => 'yr''month' => 'mth''day' => 'day',
        
'hour' => 'hr''minute' => 'min''second' => 'sec'
    
);

    foreach (
array_keys($diffs) as $interval) {
        while (
$t2 >= ($t3 strtotime("+1 ${interval}"$t1))) {
            
$t1 $t3;
            ++
$diffs[$interval];
        }
    }

    
$stack = array();
    foreach (
$diffs as $interval => $num)
        
$stack[] = array($num, ($abbr $abbrs[$interval] : $interval) . ($num != 's' ''));

    
$ret = array();
    while (
count($ret) < $precision && ($item array_shift($stack)) !== null) {
        if (
$item[0] > 0)
            
$ret[] = "{$item[0]} {$item[1]}";
    }

    return 
implode(', '$ret);
}

$t1 'Feb 4, 2008 12:16:00';
$t2 'Jul 3, 2006 16:15:30';

echo 
date_diff($t1$t2), "\n",
    
date_diff($t1$t23), "\n",
    
date_diff($t1$t22true), "\n";

?>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:43.