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.
<!--?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:
<!--?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:
<!--?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:
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:
if($time > $ma && $time < $ma + 24*60*60)
Így a teljes függvény:
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:
INSERT INTO `tabla`(`mezo`) VALUES( UNIX_TIMESTAMP() );
Szerkesztette: BlackY
Harder
Profil
Korábbi hozzászólások (1)
A régi blogon érkezett hozzászólások archívuma. Új hozzászólást már nem lehet írni.
Szia!
És hogy lehetne a délelőtt ill délutánt?
Van hozzáfűznivalód? Írj nekem közvetlenül.
Kapcsolat