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
Szia!
És hogy lehetne a délelőtt ill délutánt?