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 olyan kérdés, hogy abban az esetben, ha én az átláthatóság kedvéért szöveges formátumban szeretném tárolni a dátumom (pl. egy varchar típusú mezőben), hogyan oldható meg a ma/tegnap funkció. Természetesen a lapon előzőleg bemutatott funkció ehhez nem lesz jó, ezért mikor nekem ilyen problémám volt, csináltam hozzá egy saját funkció-t. Tegyük fel, hogy a dátumot Y. m. d., H:i formátumban tároljuk. (pl.: 2006. 08. 13., 14:54) Akkor nevezzük el a funkciónk ma_tegnap -nak, és a bemeneti paraméter legyen a $date változó.
<?php
function ma_tegnap($date) {
}
?>
Először "méretre kell vágni" a dátumunk. Így szerezzük meg a a dátum stringből az évre, hónapre és napra vonatkozó részt. A "méretre vágást" a substr funkcióval végezzük el. Két részre fogjuk szétszedni mégpedig egy "Y. m. d." formátumra és egy "H:i" formátumra.
<?php
function ma_tegnap($date) {
$ymd = substr($date, 0, 13); //ezzel megkapjuk az Y. m. d. formátumot
$hour = substr($date, 15, 5);//ez a H:i formátum
}
?>
Most meg kéne határoznunk, hogy mi a ma, és mi a tegnap.
<?php
function ma_tegnap($date) {
$ymd = substr($date, 0, 13); //ezzel megkapjuk az Y. m. d. formátumot
$hour = substr($date, 15, 5);//ez a H:i formátum
$ma = date('Y. m. d.');
$tegnap = date('Y. m. d.',mktime()-84600);
}
?>
Most nincs más dolgunk, mint összehasonlítani az $ymd változónk a $ma és $tegnap változókkal.
<?php
function ma_tegnap($date) {
$ymd = substr($date, 0, 13); //ezzel megkapjuk az Y. m. d. formátumot
$hour = substr($date, 15, 5);//ez a H:i formátum
$ma = date('Y. m. d.');
$tegnap = date('Y. m. d.',mktime()-84600);
if($ymd == $ma) { //Ha mai a dátum.
$date = "ma, $hour"; //ma, H:i
}
if($ymd == $tegnap) { //Ha tegnapi a dátum.
$date = "tegnap, $hour"; //tegnap, H:i
}
}
?>
Még van egy utolsó dolgunk. Vissza kell adnunk a változót. Így a teljes kód:
<?php
function ma_tegnap($date) {
$ymd = substr($date, 0, 13); //ezzel megkapjuk az Y. m. d. formátumot
$hour = substr($date, 15, 5);//ez a H:i formátum
$ma = date('Y. m. d.');
$tegnap = date('Y. m. d.',mktime()-84600);
if($ymd == $ma) { //Ha mai a dátum.
$date = "ma, $hour"; //ma, H:i
}
if($ymd == $tegnap) { //Ha tegnapi a dátum.
$date = "tegnap, $hour"; //tegnap, H:i
}
return $date;
}
?>
Alkalmazni pedig a következőképpen lehet: ma_tegnap(dátumváltozónk)Az esetleges kérdésekkel nyugodtan lehet hozzám fordulni, engem megtaláltok a fórumon. Jackson A cikkbe előzetes egyeztetés után javítottam, 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.
Mikor használni próbáltam volna ezt a scriptet, akkor vettem észre hogy csak 23,5 órát von ki az aktuális timestampből Ezért éjfél előtt fél órával már tegnapot ír a mai dátumokra. A helyes érték nem -84600 hanem -86400. :)
Üdv,
Scream
Van hozzáfűznivalód? Írj nekem közvetlenül.
Kapcsolat