Fa molts minuts…

Aquesta funció es interessant per posar a la típica columna de noticies que ha d’indicar el temps que fa que s’ha publicat, o per mostrar en un fòrum el temps que fa que s’ha publicat un post.

El seu us es molt simple, nomes s’ha de cridar a la funció passant com paràmetres la data en format (YYYY-MM-DD hh:mm:ss) que es el format per defecte que sol retornar el MySQL las dates (per aixo el nombre de la variable).

Un altre opció que podeu fer es eliminar les línies 2,3,4 i 5 i passar-li directament la data en format temps 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 fa( $data_mysql ) {
	$data      = explode(" ", ($data_mysql));
	$dia        = explode("-", $data[0]);
	$hora       = explode(":", $data[1]);
	$data_unix = mktime($hora[0], $hora[1], $hora[2], $dia[1], $dia[2], $dia[0]);
	$ht         = time() - $data_unix;
	if( 2116800 <= $ht ){
		$dia      = date('d', $data_unix);
		$mes      = date('n', $data_unix);
		$ano      = date('Y', $data_unix);
		$hora     = date('H', $data_unix);
		$minuto   = date('i',$data_unix);
		$mesarray = array('', 'Gener', 'Febrer', 'Març', 'Abril', 'Maig', 'Juny', 'Juliol', 'Agost', 'Setembre', 'Octubre', 'Novembre', 'Desembre');
		$data    = "el $dia de $mesarray[$mes] del $ano";
	}
	if( 60 > $ht ){
		$data = "fa $ht segons";
	} elseif( 3570 > $ht ){
		$hc = round( $ht / 60 );
		if( 1 < $hc ){
			$s = "s";
		}
		$data = "fa $hc minut".$s;
	} elseif( 84600 > $ht ){
		$hc = round( $ht / 3600 );
		if( 1 < $hc ){
			$s = "s";
		}
		$data = "fa $hc hora".$s;
		if( 4200 < $ht && 5400 > $ht ){
			$data = "fa mes d'una hora";
		}
	} elseif( 561600 > $ht ){
		$hc = round( $ht / 86400 );
		if( 1 == $hc ){
			$data = "ahir";
		}
		if( 2 ==$hc ){
			$data = "abans d'ahir";
		}
		if( 2 < $hc )
			$data = "fa $hc dies";
	} elseif( 2116800 > $ht ){
		$hc = round( $ht / 604800 );
		if( 1< $hc ){
			$s = "s";
		}
		$data = "fa $hc setmana".$s;
	} elseif( 30242054.045 > $ht ){
		$hc = round( $ht / 2629743.83 );
		if( 1 < $hc ){
			$s = "os";
		}
		$data = "fa $hc mes".$s;
	}
	return $data;
}

Deixa un comentari

L'adreça electrònica no es publicarà Els camps necessaris estan marcats amb *