PHP: Funkce pro práci s datem a časem
Vyčerpávající přehled funkcí pro práci s datumem a časem s příklady.

Č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(, int <čas> );

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

 
< Předch.