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

Kapcsolódó bejegyzések:
  • A következőkben azt szeretném bemutatni, hogy a dátumoknál hogyan is írathajuk ki azt, hogy ha a blog bejegyzést például ma írtam, akkor azt írja, hogy “Ma, 18:1 …

  • Itt láthattok egy módszert arra, hogy hogyan írathatjátok ki egy rövid PHP script segítségével az oldal betöltődésének idejét:A scriptet oda kell b …

  • Nagy általánosságban a hozzáértők a dátumukat UNIX TIMESTAMP-ként (időbélyeg) tárolják integer vagy unix timestamp típusú adatbázis-mezőkben. Felmerülhet egy oly …

  • Általában honlapok alján lehet látni azt az infót, hogy a lap x.y idő alatt töltődött be. Ezt nagyon egyszerűen megcsinálhatod te is a lapodon.Először is …

  • Ebben a tutorialban a Windows futásidejének az előcsalásával fogunk foglalkozni. Szükséges hozzávalók: egy PHP futtatására képes Windows-os webszerver. Én A …

A cikket beküldte: elias (http://www.e-lias.hu)

5 hozzászólás

  1. Dzsekk says:

    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. e-lias says:

    Nem, a $ido egy timestamp.

  3. Dzsekk says:

    Igen, volt már timestamp is, de nem ír ki semmit. Ötlet, hogy mit nem írok (jól)?

  4. e-lias says:

    Í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?

  5. Dzsekk says:

    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.

Szólj hozzá
a Eltelt idő c. bejegyzéshez

- Engedélyezett HTML elemek: <a> <em> <strong> <ul> <ol> <li>
- Forráskód beküldéséhez tedd a kódot ezek közé: <pre lang="php" line="1">Kódrészlet helye itt</pre>