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

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.

  1. Screamazc.hu

    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