Eltelt idő

A minap belefutottam abba a problémába, hogy nem a dátumot kellett kiíratnom, hanem az azóta eltelt időt. Nos itt van rá egy script.

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
<?php
function elido($ido, $time = null) {
	$tp = $ido;
	$time = Is_null($time) ? time() : $time;
	$ido2 = abs($time - $tp);
 
	$sec = $ido2;
	$min = floor ($ido2 / 60);
	$min2 = $min % 60;
	$hour = floor ($ido2 / 60 / 60);
	$hour2 = $hour % 24;
	$days = floor ($ido2 / 60 / 60 / 24);
	$days2 = $days % 7;
	$week = $week2 = floor ($ido2 / 60 / 60 / 24 / 7);
 
	if ( $week2 >= 4) {
		return date ( "Y.m.d  H:i", $tp );
	}
 
	$elap = '';
	if ( $sec > 0 ) {
		$elap = $sec.' másodperce';
		if ( $min != 0 ) {
			$elap = $min2.' perce';
			if ( $hour != 0 ) {
				$elap =$hour2.' órája'.' '.$min2.' perce';
				if ( $days != 0 ) {
					$elap =$days2.' napja'.' '.$hour2.' órája';
					if ( $week != 0 ) {
						$elap =$week2.' hete'.' '.$days2.' napja';
					}
				}
			}
		}
	}
 
	if ( $elap == '' ) {
		return 'most';
	}
	else {
		return $elap;
	}
}

Ez a script egy unix időbélyeget vár. Ezen kívül megadható egy második is, ha nem az aktuális időhöz szeretnénk viszonyítani.
A 4. hét eltelte után a dátumot írja ki. Előtte pedig mindig 2 paramétert sorrendben: másodperc, perc-másodperc, óra-perc, nap-óra, hét-nap.

Remélem hasznos lesz. Ha valami hiba van a kódban, akkor szóljatok, mert eddig én nem találkoztam vele.

Megjegyzés: módosítottam a kódon, felvittem a második paraméter megadásának lehetőségét. – BlackY

5 HOZZÁSZÓLÁS

  1. Szia!

    Biztos velem van a hiba, de már mindenhogy próbáltam működésre bírni, de hiába.
    Szóval az idő egy datetime típusú mező, strtotime() függvénnyel.

    1
    
    $ido = strtotime($sor["datum"]);
  2. Igen, volt már timestamp is, de nem ír ki semmit. Ötlet, hogy mit nem írok (jól)?

  3. Így próbáltad?

    1
    2
    
    $ido = strtotime($sor["datum"]);
    print elido($ido);

    Esetleg nem lehet, hogy a $ido változód üres? Vagy nem tstamp van benne?

  4. Hálás vagyok, működik, azt hittem már mindent bevetettem. :) Viszont azt megkérdezhetem, miért szükséges timestamp hozzá? Kipróbáltam és datetime-al is működik.

HOZZÁSZÓLOK A CIKKHEZ

Kérjük, írja be véleményét!
írja be ide nevét