Skip to Content

Datum a čas -formátovací specifikátory (PHP)

Následující specifikátory lze použít v evropském standardu jako parametry funkcí date(), gmdate() a date_format().

Formátování měsíce

F......Celý název měsíce (January až December)
M.....Zkrácený název měsíce na tři znaky (Jan)
m.....Číslo měsíce s úvodními nulami (01 - 12)
n......Číslo měsíce bez úvodních nul (1 - 12)
t.......Počet dnů v aktuálním měsíci (28 - 31)

Formátování dne

l (malé L)...Celý název dne v týdnu (Sunday)
D...............Zkrácený název dne na tři znaky (Sun)
d...............Den měsíce - dvě číslice s úvodními nulami (01 - 31)
j................Den měsíce - dvě číslice bez úvodních nul (1 - 31)
w..............Číselná reprezentace dne v týdnu (0 - 6, 0 je neděle)
z...............Den v roce (0 - 366)

Formátování roku

L......Zjišťuje, zda je rok přestupný (1 - přestupný rok, 0 - není)
Y......Čtyřčíslí roku (2011)
y......Dvojčíslí roku (11)

Formátování času

H......24hodinový formát hodiny s úvodními nulami (00 - 23)
h......12hodinový formát hodiny s úvodními nulami (01 -12)
G......24hodinový formát hodiny bez úvodních nul (0 - 23)
g......12hodinový formát hodiny bez úvodních nul (1 - 12)
i........Minuty s úvodními nulami (00 - 59)
s.......Sekundy s úvodními nulami (00 - 59)

Formátování časových pásem

e................Identifikátor časového pásma (Europe/Prague)
I (velké i)....Určí, zda je čas posunut na letní čas (1 - ano, 0 - ne)

Dále máme k dispozici funkci StrFTime(parametry, Time()).
Používá se pro lokalizovaná jména dnů a měsíců s ohledem na nastavení národních specifik.

Příklad:

print("Dnes je ".StrToLower(strftime("%A, %e. %B %Y.", time())));

vypíše dnešní datum:

Dnes je pátek, 24. listopad 2017.

(Řešení problému se skloňováním názvů měsíce najdete o pár řádků níže)

Hledáte-li přehled konverzních specifikátorů, mrkněte například zde: Datum a čas - konverzní specifikátory.
Tyto české názvy dnů a měsíců (pozor na anglické číslování - je také jiné) jsou nastavená pomocí fce SetLocale.

Příklad:
SetLocale(LC_ALL, "cs_CZ.UTF-8");
print("Dnes je ".StrToLower(strftime("%A, %e. %B %Y.", time())));

anebo jen:
SetLocale(LC_ALL, "Czech");

Jak lokalizaci specifikujete by mělo být závislé také na nastavení sady kódování serveru, jelikož se mohou někdy vyskytnout problémy s diakritikou.
Další problémy můžeme vyřešit vložením náhradních položek do pole proměnné s využitím fce Date():

$mesice=array(1=>"ledna","února","března","dubna","května",
"června","července","srpna","září","října","listopadu","prosince");
echo $mesice[date("n")];

anebo

$dny_v_tydnu=array("neděle","pondělí","uterý","středa",
"čtvrtek","pátek","sobota");
echo $dny_v_tydnu[date("w")];