Články o tom, jak si nechat v PHP zobrazit dnešní datum s
příslušným svátkem, se to na českém internetu jenom hemží, ale
možnosti funkcí jsou daleko větší! V PHP máme k dispozici 13 funkcí,
které přímo pracují s datem nebo časem. Většinu funkcí stejně nikdy
nevyužijete, ale kdyby...
Nyní bych se pokusil srozumitelně probrat nejdůležitější funkce a
ke každé uvést nějaký ten příklad, který by se mohl v praxi
hodit.OK? Jdeme na to!
fce Time();
Udává počet sekund od 1. ledna 1970. Tato zdánlivě nesmyslná
vlastnost je ale velkou výhodou. Představte si, že potřebujete vědět
zítřejší datum. Kdyby jste měli k číslu dne přičítat jedničku,
narazili byste na problém vždy na konci měsíce, protože každý měsíc
má, jak jistě víte, jiný počet dní. S touto funkcí však můžete věc
rychle a snad vyřešit. Zkrátka k výsledku funkce přičtete 86400, což
se počet sekund za jeden den a máte vystaráno!
fce Date(
Slouží k formátování časových údajů. Datum a čas se formátují
podle řetězce, ve kterém je zadáno, jak se má datum a čas zobrazit.
V následující tabulce můžete vidět všechny znaky použitelné v onom
magickém formátovacím řetězci.
|
Znak |
Význam |
|
Y |
Zobrazí čtyřčíselné zobrazení roku (např. 1990) |
|
y |
Zobrazí dvoučíselné zobrazení roku (např. 90) |
|
M |
Zkratka měsíce (anglicky) (např. Aug) |
|
m |
Číslo měsíce (01-12) |
|
F |
Jméno měsíce (anglicky) (např. August) |
|
D |
Zkratka dne v týdnu (anglicky) (např. Sat) |
|
l |
Jméno dne v týdnu (anglicky) (např. Saturday) |
|
w |
Číslo dne v týdnu (1-7) |
|
d |
Číslo dne v měsíci (01- 31) |
|
j |
Číslo dne v měsíci (1-31) |
|
z |
Číslo dne v roce (001-365) |
|
H |
Hodina (00-23) |
|
h |
Hodina (00-12) |
|
i |
Minuta (00-59) |
|
s |
Sekunda (00-59) |
|
A |
Dopoledne/odpoledne (AM/PM) |
|
a |
Dopoledne/odpoledne (am/pm) |
|
L |
Je přestupný rok? (1 – Ano, 0 – Ne)
|
A ještě něco, pokud nepoužijete parametr čas, funkce si sama
doplní jeho hodnotu z funkce Time(). Je to docela výhoda, protože
pokud chcete vypsat aktuální datum nebo čas, což budete dělat asi
nejčastěji, nemusíte parametr vůbec zadávat.
Nyní si uvedeme jeden příklad na použití obou funkcí.
<?
// Příklad na využití
funkce Date a Time
Echo "Dnes je: ".Date("j.m.
Y")."
";
Echo "Včera bylo: ".Date ("j.m.
Y",time()-86400)."
";
Echo "Právě je: ".Date ("H:i:s
")."
";
Echo "Před hodinou bylo: ".Date
("H:i:s",Time()-3600)."
";
?>
Pro lepší přehled o časových údajů jsem za vás vynásobil pár
sekund:
| Jednotka |
Počet sekund |
| hodina |
3600 |
| den |
86400 |
| rok |
31536000 |
| přestupný rok |
31622400 |
fce mktime (int , int ,
int , int , int , int
);
Tato funkce naopak vrací počet sekund od 1.1. 1970 dle zadaných
parametrů. Zajímavé je, že tato funkce automaticky přepočítává chyby
v parametrech. Pokud např. uvedete 13. měsíc, tak ho funkce určí
jako leden dalšího roku.
Nyní si uvedeme jeden příklad, který bude obsahovat všechny zatím
zveřejněné funkce. Tento jednoduchý skriptík se vám určitě bude
hodit, pokud máte své vlastní stránky s informacemi o sobě. Abyste
nemuseli každý rok měnit svůj aktuální věk, tento skript ho vypočítá
i přesností na sekundu, ale musíte vědět přesně na sekundu, kdy jste
se narodili. Tak tady je:
<?
// Skript pro výpočet
aktuálního věku s libolnou přesností
$hod= 13; //zadejte hodinu
vašeho narození
$min= 30; //zadejte minutu vašeho
narození
$sek= 15; //zadejte sekundu vašeho narození
$mes= 9;
//zadejte měsíc vašeho narození
$den= 4; //zadejte den vašeho
narození
$rok= 1985; //zadejte rok vašeho narození
$vek
=strVal((Time()-mktime($hod,$min,$sek,$mes,$den,$rok))/31536000);
Echo Substr($vek,0,5)." let";
// Zobrazí váš aktuální věk
s přesností na dvě desetinná místa.
?>
fce getdate (int );
Tato funkce vrací asociativní pole, ve kterém jsou uloženy
jednotlivé položky času. Je to jednoduchý způsob, jak "rozebrat"
časový údaj na díly, se kterými potřebujeme pracovat.
Indexy asociativního pole a jejich výsledky uvádí následující
tabulka:
| Index |
Výsledek |
| seconds |
sekundy |
| minutes |
minuty |
| hours |
hodiny |
| mday |
číslo dne měsíci |
| wday |
číslo dne v týdnu |
| mon |
měsíc |
| year |
rok |
| yday |
číslo dne v roce |
| weekday |
anglické jméno dne v týdnu |
| month |
anglické jméno měsíce |
<?
$cas =
getdate();
if ($cas["hours"]==12) Echo
"Dobré poledne!";
else
echo "Není poledne, takže není k čemu
přát. Škoda.";
?>
fce checkdate (int <mesic>, int
<den>, int <rok>);
fce vrací hodnotu true, pokud parametry splnily všechny
požadavky. Tj. rok byl zadán od 1 do 32767, měsic od 1 do 12 a den
podle měsíce. Je to užitečné hlavně pokud chceme, aby uživatel
nemohl zadat třeba 31.2. 2002 . Tuto fci by mělo podporovat PHP
4.0.0 nebo vyšší.
Tak to by bylo z mé strany asi tak vše. Doufám, že vám byl tento
článek nějak prospěšný, a že získané vědomosti nějak upotřebíte.
Další informace: http://www.php.cz/manual/cs/ref.datetime.php