Dátum függvény (“Ma”, “Tegnap”)


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:19″, ha tegnap írtam, akkor “Tegnap, 18:19″, ha régebben akkor pedig a teljes dátumot kiírja.

A funckiónkat nevezzük el mondjuk datum-nak, a bemeneti paraméter neve pedig legyen $time.

1
2
3
4
<?php
function datum($time) {
}
?>

A $time függvény lesz a bemeneti értékünk. Az az érték amelyet a time() függvénnyel tároltunk el. (Tehát ilyen formátum: 124393213)

Első feladatunk, hogy meghatározzuk, mikor is van az a “ma”, és a “tegnap”. Ezt a következőképpen tehetjük meg:

1
2
3
4
5
6
<?php
function datum($time) { 
 $ma = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
 $tegnap =  $ma-(60*60*24);
}
?>

Az mktime()-al az aktuális nap éjfélét meghatározzuk time() alakban. Ez lesz az a dátum, amelynél ha nagyobb a beadott érték, akkor ma írtuk a bejegyzést. A tegnap értékét úgy kapjuk meg, hogy a mából kivonunk 60*60*24-et. Ha a dátumunk a $ma-nál kisebb, de $tegnap-nál nagyobb, akkor tegnap írtuk a bejegyzést. Ha $tegnap előtti a dátum, akkor pedig kiírjuk a teljes dátumot. Így tehát, a végső function-ünk:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
function datum($time) { 
 $ma = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
 $tegnap = $ma-(60*60*24);
 
 if($time > $ma) { $datum = "Ma, " . date("H:i",$time); }
 elseif($ma > $time AND $time > $tegnap) { $datum = "Tegnap, " . date("H:i",$time); }
 elseif($time < $tegnap) { $datum = date("Y.m.d. H:i",$time); }
 
 return $datum;
}
?>

A funkció használata:

1
echo datum($time);

Ui.: Azért a funkciónk még nem teljes, mert jó esetben lesz még egy holnap is, és utána még pár nap. Természetesen ezeknek az időpont bélyege (timestamp) nagyobb lesz, mint a $ma változó értéke, úgyhogy még egy feltételt hozzá kell adnunk az if-nél található kifejezéshez:

1
 if($time > $ma && $time < $ma + 24*60*60)

Így a teljes függvény:

1
2
3
4
5
6
7
8
9
10
function datum($time) { 
 $ma = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
 $tegnap = $ma-(60*60*24);
 
 if($time > $ma && $time < $ma + 24*60*60) { $datum = "Ma, " . date("H:i",$time); }
 elseif($ma > $time AND $time > $tegnap) { $datum = "Tegnap, " . date("H:i",$time); }
 else { $datum = date("Y.m.d. H:i",$time); }
 
 return $datum;
}

És még egy kis plusz információ: a függvény használatához ún. UNIX timestamp-ekre lesz szükségünk, így pl. a MySQL date és datetime típusa kilőve. Az időpontokat a következőképpen tárolhatjuk (Integer típusú mezőben), hogy azok később könnyen felhasználhatóak legyenek a függvényünkkel:

1
INSERT INTO `tabla`(`mezo`) VALUES( UNIX_TIMESTAMP() );

Szerkesztette: BlackY

Kapcsolódó bejegyzések:
  • 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 …

  • 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.

  • Ezt a kis kódrészletet azért osztom meg, mert sok javascriptes megoldást láttam már a dátum kiíratására. Alapból nekem nem tetszett, ahogy a php kiírja a date fü …

  • 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 …

  • Honlapkészítés során számos olyan eset lehet, amikor nincs szükség a dátumok kiiratására. Pl. benne van az URL-ben és a lapon már felesleges, vagy olyan a téma a …

A cikket beküldte: Methos (http://methos.fishworks.hu/)

1 hozzászólás

  1. Gábor says:

    Szia!

    És hogy lehetne a délelőtt ill délutánt?

Szólj hozzá
a Dátum függvény (“Ma”, “Tegnap”) 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>