Forum und email
date

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 Swatch000999
dDen měsíce, dvě číslice s úvodními nulami0131
DTextová reprezentace dne, tři znakyMonSun
FPlná textová reprezentace měsíce typu January nebo MarchJanuaryDecember
g12-hodinový formát hodiny bez úvodních nul112
G24-hodinový formát hodiny bez úvodních nul023
h12-hodinový formát hodiny s úvodními nulami0112
H24-hodinový formát hodiny s úvodními nulami0023
iMinuty s úvodními nulami0059
I (velké i)Zjištění, zda je letní čas1 pokud je letní čas, 0 jinak.
jDen měsíce bez úvodních nul131
l (malé 'L')Plná textová reprezentace dne v týdnuSundaySaturday
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 nulami0112
MKrátká textová reprezentace měsíce, tři znakyJanDec
nČíselná reprezentace měsíce bez úvodních nul112
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 nulami0059
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íci2831
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 roce0365
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ý.-4320043200

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().