Hace muchos minutos…

Esta función es interesante para poner en la típica columna que noticias que ha de indicar el tiempo que hace que se ha publicado, o para mostrar en un foro el tiempo que hace que se ha publicado un post.

Su uso es muy simple, simplemente se ha de llamar pasando como parámetros la fecha en formato (YYYY-MM-DD hh:mm:ss) que es el formato por defecto que suele devolver el MySQL las fechas (de ahí el nombre de la variable).

Otra opción que podéis hacer es eliminar las lineas 2,3,4 y 5 y pasarle directamente la fecha en formato tiempo Unix.

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
function hace( $fecha_mysql ) {
	$fecha      = explode(" ", ($fecha_mysql));
	$dia        = explode("-", $fecha[0]);
	$hora       = explode(":", $fecha[1]);
	$fecha_unix = mktime($hora[0], $hora[1], $hora[2], $dia[1], $dia[2], $dia[0]);
	$ht         = time() - $fecha_unix;
	if( 2116800 <= $ht ){
		$dia      = date('d', $fecha_unix);
		$mes      = date('n', $fecha_unix);
		$ano      = date('Y', $fecha_unix);
		$hora     = date('H', $fecha_unix);
		$minuto   = date('i',$fecha_unix);
		$mesarray = array('', 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre');
		$fecha    = "el $dia de $mesarray[$mes] del $ano";
	}
	if( 60 > $ht ){
		$fecha = "hace $ht segundos";
	} elseif( 3570 > $ht ){
		$hc = round( $ht / 60 );
		if( 1 < $hc ){
			$s = "s";
		}
		$fecha = "hace $hc minuto".$s;
	} elseif( 84600 > $ht ){
		$hc = round( $ht / 3600 );
		if( 1 < $hc ){
			$s = "s";
		}
		$fecha = "hace $hc hora".$s;
		if( 4200 < $ht && 5400 > $ht ){
			$fecha = "hace más de una hora";
		}
	} elseif( 561600 > $ht ){
		$hc = round( $ht / 86400 );
		if( 1 == $hc ){
			$fecha = "ayer";
		}
		if( 2 ==$hc ){
			$fecha = "antes de ayer";
		}
		if( 2 < $hc )
			$fecha = "hace $hc días";
	} elseif( 2116800 > $ht ){
		$hc = round( $ht / 604800 );
		if( 1< $hc ){
			$s = "s";
		}
		$fecha = "hace $hc semana".$s;
	} elseif( 30242054.045 > $ht ){
		$hc = round( $ht / 2629743.83 );
		if( 1 < $hc ){
			$s = "es";
		}
		$fecha = "hace $hc mes".$s;
	}
	return $fecha;
}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *