István mai cikkéből kiderül, hogyan jeleníthetünk meg időt, dátumot a weboldalon PHP segítségével.
Amennyiben a weboldalunkon PHP kód használatával szeretnénk dátumot és időt megjeleníteni, egy egyszerű beépített függvénnyel megtehetjük.
PHP segítségével azonban nem csak megjeleníteni tudunk dátumot és időt, hanem számolni is lehetőségünk van vele.
Nézzünk egy egyszerű példát:
<?php
print date(’Y. F d. H:i:s’);
?>
Ez a script az aktuális dátumot és időt írja ki, az alábbi formában:
2012. November 05. 08:34:35
A date függvény alapesteben egy paramétert vár, ez nem más, mint a dátum kiíratásának formátuma.
Ennek rengeteg variációja létezik, a teljes lista a http://hu2.php.net/manual/en/function.date.php oldalon tekinthető meg. Fontos, hogy a dátumformátumot string típusban kell megadni, tehát ne felejtsük le az aposztrófokat, vagy idézőjeleket.
A date függvénynek megadhatunk egy második paramétert is, ami egy időbélyeg. Ebben az esetben nem az aktuális dátumot írja ki a megadott formában, hanem az időbélyegben tárolt időpontot.
Nézzük meg, hogy fest egy ilyen időbélyeg:
<?php
print strtotime(’now’);
?>
Az strtotime függvény egy időbélyeget ad vissza, amennyiben a now utasítást kapja, akkor az épp aktuális időt. A kiíratás után valami hasonlót kapunk:
1352101316
Nos, így néz ki egy időbélyeg. Másodperceket reprezentál, egész pontosan az 1970. Január 1. 0:00:00 óta eltelt másodperceket.
Amennyiben tehát nem az aktuális időt szeretnénk megjeleníteni, vagy tárolni, akkor a date függvénynek adjunk meg egy hasonló időbélyeget, a következő formátumban:
date(’ Y. F d. H:i:s’, 1352101316);
Figyeljük meg, hogy a második paraméter integer típusú, tehát ebben az esetben nem szabad kitenni az idézőjeleket!
Felmerül a kérdés, hogyan tudjuk meg egy tetszőleges dátum időbélyegét?
Akár ki is számolhatjuk, de ebben az esetben a szökőévekre is oda kell figyelnünk.
Ennél a PHP biztosít számunkra egy egyszerűbb eljárást.
Az strtotime függvény, amivel az előbb a ’now’ időbélyegét kaptuk vissza, más időpont visszaadására is alkalmas, például az alábbi formában:
strtotime("10 September 2000");
vagy:
strtotime("+1 week 2 days 4 hours 2 seconds");
Látható, hogy az eszközkészlet elég tág, a teljes lista, és példák az alábbi oldalon tekinthetők meg:
http://hu2.php.net/manual/en/function.strtotime.php
Most nézzük meg, hogyan célszerű a dátumokat tárolni!
Abban az esetben, ha csak kiíratni szeretnénk, a programozó ízlésére bízhatjuk. Amennyiben számolni is szeretnénk velük, egyértelmű, hogy a szöveges formát kerülni kell. Ez mellett ügyeljünk, hogy a felesleges nullákat is kerüljük:
2012.11.05 helyett tehát használjuk a 2012.11.5 formát. Ugyanezt a hónapokkal, és órákkal is tegyük meg. A perc és másodperc tárolására csak nullás verzió létezik, de ezt is kijátszhatjuk egy elágazási feltétellel:
($mp változóban elraktároztuk a szükséges másodperceket)
if($mp<10)$mp=$mp[1];
Itt egyszerűen felülírjuk a változót önmagának a második karakterével. (A karakterek számozás 0-val kezdődik, így a 2. karakter indexe 1. Ezért: $mp[1])
Tehát például, ha $mp értéke ’05’, akkor ennek a stringnek a 2. karaktere ’5’.
Most nézzünk egy egyszerű scriptet, ami minden másodpercben az aktuális időt mutatja:
<meta http-equiv="refresh" content="1">
<?php
print date(’Y. F d. H:i:s’);
?>
A refresh meta tag másodpercenként frissíti az oldalt, amennyiben a content értéke 1.
A probléma ezzel az, hogy a szerver minden másodpercben végrehajt egy lefutást, ami nem túl erőforrásbarát.
Ennek kiküszöbölésére használjunk JavaScriptet, vagy más kliens oldalú scriptnyelvet. Célszerű az oldal lefutásakor átadni a böngészőnek az aktuális időt, és a kliensoldali nyelvvel léptetni az időt.
Érdemes 10-20 másodpercenként újra lefuttatni a PHP scriptet, mivel ezek a nyelvek nem túl pontosak, így ennyi idő alatt akár egy másodpercet is tévedhet az „óránk”.
Ezt egyszerűen úgy oldhatjuk meg, ha a refresh meta, content értékét 10-re állítjuk. Így 10 másodpercenként frissül az oldal, ami sem a szervernek, sem a felhasználónak nem kényelmetlen, a maradék időben pedig egy kliensoldali nyelv lépteti a másodperceinket, és ha úgy adódik, a perceket és az órát is. (2012 12. 31. 23:59:59 esetében az éveket is J)
A végére, még egy gondolat: Érdemes elgondolkodni azon, mire használható még az időbélyeg.
Adatbázisok használatakor célszerű nem „beégetett” dátumformátumokat használni, mivel az, a későbbiekben már nem módosítható, az időbélyeg viszont tetszőlegesen formálható, de akár azonosítóként is szolgálhat események, vagy automatikusan lefutó SQL scriptek esetében.
Jó gyakorlást kívánunk!
Használja ki az utolsó padlóáras lehetőséget, és legyen ott a január közepén induló Akkreditált Webdesigner Mester tanfolyamon még a 2012-es tandíjon!
Válassza januári induló Akkreditált Web Artist képzésünket, és szerezzen Webdesigner és PHP-Webprogramozó végzettséget most egyetlen kombinált tanfolyam alatt!
A képzések végén végzett hallgatóinknak céges álláslehetőségeket kínálunk!
További induló informatika tanfolyamainkhoz kattintson ide!
Adja le jelentkezését legkésőbb január 10-ig, és mi biztosítjuk Önnek a jelenlegi, 2012-es tandíjat az induló csoportokban!
Jelentkezzen itt, vagy bármelyik másik elérhetőségünkön!
Várjuk szeretettel!
NetlogiC School Informatika Szakképző Iskola
Gyakorlat orientált informatika oktatás rugalmas időbeosztással!
www.netlogi-c.net