Código de PHP - Función que determina el hace cuanto tiempo de alguna fecha (diferencia) con el momento actual

Imágen de perfil
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Función que determina el hace cuanto tiempo de alguna fecha (diferencia) con el momento actualgráfica de visualizaciones


PHP

Publicado el 10 de Abril del 2017 por Kip (28 códigos)
3.374 visualizaciones desde el 10 de Abril del 2017
Función que ayuda a determinar el 'hace cuanto' o la diferencia de forma legible entre una fecha dada y el momento actual.

Uso:

1
echo 'Hace '.hace_cuanto('2017-03-09');

La función retornara (la diferencia es con la fecha con la que ejecute yo la función):

1
Hace 1 mes, 1 día, 5 horas, 2 minutos y 47 segundos

Recuerda que esta funcion solo te trae los valores que existan como diferencia entre la fecha enviada y la actual, por ejemplo:

Si la fecha actual es 2017-04-09 23:01 y la fecha que le enviamos es 2017-04-09 23:00 entonces retornara simplemente 1 minuto.

Si la fecha actual es 2017-04-09 23:02 y la fecha que le enviamos es 22017-04-09 23:00:59 entonces retornara 1 minuto y 1 segundo.

Tambien es posible enviarle otra fecha como parametro para que obtenga la diferencia con ella, ten en cuenta que en ambos casos la fecha que es el primer parametro debe ser menor que la fecha actual o la fecha que se envia como segundo parametro:

1
echo 'Hace '.hace_cuanto('2017-04-09 23:00:59', '2017-04-09 23:03:13');

1
Hace 2 minutos y 14 segundos

Aqui estan los formatos en los que puedes enviar las fechas.
http://php.net/manual/es/datetime.formats.php

Aunque siempre recomiendo yyyy-mm-dd H:i:s

Recuerda que solo te trae la diferencia que existe entre las fechas ya sea esta en mins, horas o segs.
No puede traer el total de horas o suma de horas que hay entre la fecha enviada y la actual o la fecha enviada como segundo parametro.

Requerimientos

PHP 5 >= 5.2.0, PHP 7

1.0
estrellaestrellaestrellaestrellaestrella(2)

Actualizado el 25 de Julio del 2017 (Publicado el 10 de Abril del 2017)gráfica de visualizaciones de la versión: 1.0
3.375 visualizaciones desde el 10 de Abril del 2017
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function hace_cuanto($fecha1, $fecha2 = NULL) {
    $fecha1 = new Datetime($fecha1);
    if ( ! $fecha2) {
        $fecha2 = new Datetime('now');
    } else {
        $fecha2 = new Datetime($fecha2);
    }
    if ($fecha1 > $fecha2) return;
    $r_str = array();
    $intervalo = $fecha1->diff($fecha2);
    $diff = $intervalo->format('%ya-%mm-%dd-%hh-%ii-%ss');
    preg_match_all("/[1-9]+[a-z]+/", $diff, $match_diff);
    $time_str = array(  'a' => 'año',
                        'm' => 'mes',
                        'd' => 'día',
                        'h' => 'hora',
                        'i' => 'minuto',
                        's' => 'segundo'
                    );
    foreach ($match_diff[0] as $time) {
        $times = intval($time);
        $index_time = str_replace($times, '', $time);
        $string = $time_str[$index_time];
        $string .= $time > 1 ? ($string === 'mes' ? 'es' : 's' ) : '' ;
        $r_str[] =sprintf('%d %s', $time, $string);
    }
    $ult = end($r_str);
    $prev = prev($r_str);
    $r_str = array_reduce($r_str, function($r, $v) use($prev, $ult, $r_str) {
        if (count($r_str) > 1) {
            $v = $prev === $v ? sprintf('%s ', $v) : ($ult === $v ? sprintf('y %s', $v) :  sprintf('%s, ', $v));
        }
        $r .= $v;
        return $r;
    });
    return $r_str;
}



Comentarios sobre la versión: 1.0 (2)

Imágen de perfil
10 de Abril del 2017
estrellaestrellaestrellaestrellaestrella
Muy bueno!!!
Responder
Cristian
13 de Julio del 2017
estrellaestrellaestrellaestrellaestrella
Excelente! Me dio una mano muy grande! Muchas gracias!!!!
Responder

Comentar la versión: 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s3941