date

(PHP 3, PHP 4, PHP 5)

date -- Formátuje místní datum/čas

Popis

string date ( string format [, int timestamp] )

Vrací řetězec formátovaný podle daného formátovacího řetězce s použitím daného celočíselného časového razítka timestamp nebo aktuálního místního času (není-li časové razítko zadáno). Jinými slovy, parametr timestamp je nepovinný a jeho výchozí hodnota je výsledek funkce time().

Poznámka: Platný rozsah pro časové razítko je typicky od pátku 13.12.1901 20:45:54 GMT do úterý 19.1.2038 03:14:07 GMT. (Tyto hodnoty odpovídají minimální a maximální hodnotě 32-bitového celého čísla se znaménkem). Na Windows je tento rozsah omezen na období 1.1.1970 až 19.1.2038.

K vygenerování časového razítka z řetězce reprezentujícího datum lze použít funkci strtotime(). Navíc některé databáze mají funkce, které konvertují jejich datové formáty na časová razítka (např. funce UNIX_TIMESTAMP v MySQL).

Tabulka 1. Ve formátovacím řetězci lze používat tyto znaky:

znak parametru formatPopisUkázka vracených hodnot
aPříznak dopoledne/odpoledne malými písmenyam nebo pm
APříznak dopoledne/odpoledne velkými písmenyAM nebo PM
BInternetový čas Swatch000 až 999
dDen měsíce, dvě číslice s úvodními nulami01 až 31
DTextová reprezentace dne, tři znakyMon až Sun
FPlná textová reprezentace měsíce typu January nebo MarchJanuary až December
g12-hodinový formát hodiny bez úvodních nul1 až 12
G24-hodinový formát hodiny bez úvodních nul0 až 23
h12-hodinový formát hodiny s úvodními nulami01 až 12
H24-hodinový formát hodiny s úvodními nulami00 až 23
iMinuty s úvodními nulami00 až 59
I (velké i)Zjištění, zda je letní čas1 pokud je letní čas, 0 jinak.
jDen měsíce bez úvodních nul1 až 31
l (malé 'L')Plná textová reprezentace dne v týdnuSunday až Saturday
LZjištění, zda je rok přestupný1 pokud je přestupný rok, 0 jinak.
mČíselná reprezentace měsíce s úvodními nulami01 až 12
MKrátká textová reprezentace měsíce, tři znakyJan až Dec
nČíselná reprezentace měsíce bez úvodních nul1 až 12
OOdchylka od Greenwichského času (GMT) v hodináchPříklad: +0200
rDatum formátované podle RFC 822Příklad: Thu, 21 Dec 2000 16:01:07 +0200
sSekundy s úvodními nulami00 až 59
SAnglická pořadová přípona dne v měsíci, 2 znaky st, nd, rd nebo th. Dobře funguje s j
tPočet dní v daném měsíci28 až 31
TNastavení časového pásma na tomto počítačiPříklady: EST, MDT ...
USekundy od počátku éry Unix (1. ledna 1970 00:00:00 GMT)Viz také time()
wČíselná reprezentace dne v týdnu0 (pro neděli) až 6 (pro sobotu)
WČíslo týdne podle ISO-8601, týdny začínají v pondělí (doplněno v PHP 4.1.0)Příklad: 42 (42. týden v roce)
YPlná číselná reprezentace roku, 4 číslicePříklady: 1999 nebo 2003
yDvouciferná reprezentace rokuPříklady: 99 nebo 03
zDen v roce0 až 365
ZPosun časového pásma v sekundách. Posun časových pásem západně od UTC je vždy záporný, východně od UTC je vždy kladný.-43200 až 43200

Nerozpoznané znaky ve formátovacím řetězci se vytiskou tak, jak jsou. Při použití gmdate() má formát Z vždy hodnotu 0.

Příklad 1. Příklady - date()

<?php
// Vytiskne něco jako: Wednesday
echo date("l");

// Vytiskne něco jako: Wednesday 15th of January 2003 05:51:38 AM
echo date ("l dS of F Y h:i:s A");

// Vytiskne: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date ("l", mktime(0,0,0,7,1,2000));
?>

Rozpoznávané znaky ve formátovacím řetězci můžete ochránit před zpracováním tak, že jim předřadíte obrácené lomítko. Pokud už má znak s obráceným lomítkem speciální význam, je třeba před něj přidat ještě jedno obrácené lomítko.

Příklad 2. Ochrana znaků ve funkci date()

<?php
// vytiskne něco jako 'Saturday the 8th'
echo date("l \\t\h\e jS");
?>

Je možné použít společně date() a mktime() k nalezení dat v budoucnosti či v minulosti.

Příklad 3. Příklad - date() a mktime()

<?php
$tomorrow  
= mktime (0,0,0,date("m")  ,date("d")+1,date("Y"));
$lastmonth = mktime (0,0,0,date("m")-1,date("d"),  date("Y"));
$nextyear  = mktime (0,0,0,date("m"),  date("d"),  date("Y")+1);
?>

Poznámka: Toto může být spolehlivější než prosté přičítání nebo odčítání sekund ve dni nebo měsíci (kvůli letnímu času).

Několik příkladů formátování pomocí date(). Nezapomeňte, že byste měli předřadit obrácené lomítko všem ostatním znakům, protože ty, které mají nyní speciální význam, budou způsobovat neočekávané výsledky, a ostatním může být přiřazen význam v budoucích verzích PHP. Ve všech takových případech také musíte používat apostrofy (k ohraničení řetězce), abyste zabránili znakům jako \n v odřádkování.

Příklad 4. Formátování pomocí date()

<?php
// Předpokládejme, že dnes je 10. března 2001, 17:16:18
$today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
$today = date("m.d.y");                         // 03.10.01
$today = date("j, n, Y");                       // 10, 3, 2001
$today = date("Ymd");                           // 20010310
$today = date('h-i-s, j-m-y, it is w Day z ');  // 05-16-17, 10-03-01, 1631 1618 6 Fripm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // It is the 10th day.
$today = date("D M j G:i:s T Y");               // Sat Mar 10 15:16:08 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:17 m is month
$today = date("H:i:s");                         // 17:16:17
?>

Pro formátování dat v jiných jazycích je třeba použít funkce setlocale() a strftime().

Viz také getlastmod(), gmdate(), mktime(), strftime() a time().