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 &gt; $time AND $time &gt; $tegnap) { $datum = "Tegnap, " . date("H:i",$time); }
 elseif($time &lt; $tegnap) { $datum = date("Y.m.d. H:i",$time); }
 
 return $datum;
}
?&gt;

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 &gt; $ma &amp;&amp; $time &lt; $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 &gt; $ma &amp;&amp; $time &lt; $ma + 24*60*60) { $datum = "Ma, " . date("H:i",$time); }
 elseif($ma &gt; $time AND $time &gt; $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

1 hozzászólás

HOZZÁSZÓLOK A CIKKHEZ

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