Forum und email
strftime

strftime

(PHP 3, PHP 4, PHP 5)

strftime --  Formátuje místní čas/datum s ohledem na nastavení národních specifik

Popis

string strftime ( string format [, int timestamp] )

Vrací řetězec formátovaný podle daného formátovacího řetězce, s použitím daného časového razítka timestamp, nebo aktuálního místního času, není-li razítko dáno. Název měsíce, dne v týdnu a další jazykově závislé řetězce respektují národní specifika nastavená pomocí setlocale().

Ve formátovacím řetězci se rozlišují tyto konverzní specifikátory:

  • %a - zkrácený název dne v týdnu (podle národního nastavení)

  • %A - úplný název dne v týdnu (podle národního nastavení)

  • %b - zkrácený název měsíce (podle národního nastavení)

  • %B - úplný název měsíce (podle národního nastavení)

  • %c - reprezentace času a data preferovaná aktuálním národním nastavením

  • %C - číslo století (rok dělený 100 a zkrácený na celé číslo, od 00 do 99)

  • %d - den v měsíci jako desítkové číslo (01 až 31)

  • %D - totéž jako %m/%d/%y

  • %e - den v měsíci jako desítkové číslo, jedné samotné číslici (čísla 1 až 9) předchází mezera (' 1' až '31')

  • %g - jako %G, ale bez století

  • %G - čtyřčíslicově reprezentovaný rok odpovídající týdnu podle ISO (viz %V). Má tentýž formát a hodnotu jako %Y, kromě toho, že pokud číslo týdne podle ISO patří předchozímu nebo následujícímu roku, bude tento odlišný rok použit.

  • %h - totéž jako %b

  • %H - hodina jako desítkové číslo ve 24-hodinovém formátu (00 až 23)

  • %I - hodina jako desítkové číslo ve 12-hodinovém formátu (01 až 12)

  • %j - den v roce jako desítkové číslo (001 až 366)

  • %m - měsíc jako desítkové číslo (01 až 12)

  • %M - minuta jako desítkové číslo

  • %n - znak odřádkování

  • %p - `am' nebo `pm' v závislosti na hodnotě času, resp. odpovídající řetězec podle národního nastavení

  • %r - čas v notaci a.m. a p.m. (12-hodinové)

  • %R - čas ve 24-hodinové notaci

  • %S - sekunda jako desítkové číslo

  • %t - znak tabulátoru

  • %T - aktuální čas, totéž jako %H:%M:%S

  • %u - den v týdnu jako desítkové číslo [1,7], 1 reprezentuje pondělí

    Varování

    Na počítačích Sun Solaris se vyskytuje neděle jako první den v týdnu, přestože ISO 9889:1999 (aktuální C standard) jasně specifikuje, že by to mělo být pondělí.

  • %U - týden v aktuálním roce jako desítkové číslo, počínaje první nedělí jako prvním dnem prvního týdne

  • %V - týden v aktuálním roce podle ISO 8601:1988 jako desítkové číslo, v rozsahu od 01 do 53, kde 1 je první týden s alespoň 4 dny v tomto roce, a s pondělkem jako prvním dnem v týdnu. (Odpovídající rok lze získat pomocí %G nebo %g.)

  • %W - týden v aktuálním roce jako desítkové číslo, počínaje prvním pondělkem jako prvním dnem prvního týdne

  • %w - den v týdnu jako desítkové číslo, neděle odpovídá 0

  • %x - preferovaná reprezentace data (bez času) pro aktuální národní nastavení

  • %X - preferovaná reprezentace času (bez data) pro aktuální národní nastavení

  • %y - rok jako desítkové číslo bez století (00 až 99)

  • %Y - rok jako desítkové číslo včetně století

  • %Z - časová zóna, její název nebo zkratka

  • %% - znak `%' (procento)

Poznámka: Všechny konverzní specifikátory nemusí být podporovány vaší C knihovnou, potom nebudou podporovány ani funkcí strftime() v PHP. Kromě toho také ne všechny platformy podporují práci s negativními časovými značkami, takže rozsah možných datumů může být omezen začátkem éry Unixu. To znamená, že např. %e, %T, %R a %D (a případně i další) a datumy předcházející 1.1.1970 nebudou fungovat pod Windows, některými distribucemi Linuxu a několika dalšími operačními systémy. Pro Windows lze kompletní přehled podporovaných konverzních specifikátorů najít na webových stránkách MSDN.

Příklad 1. strftime() - místní příklady

<?php
setlocale
(LC_TIME, "C");
echo
strftime("%A");
setlocale(LC_TIME, "fi_FI");
echo
strftime(" je ve finštině %A,");
setlocale(LC_TIME, "fr_FR");
echo
strftime(" ve francouzštině %A a");
setlocale(LC_TIME, "de_DE");
echo
strftime(" v němčině %A.\n");
?>
Tento příklad bude fungovat jen tehdy, máte-li daná národní specifika nainstalována v systému.

Poznámka: %G a %V, které jsou založeny na normě ISO 8601:1988, mohou vrátit neočekávané (a přesto správné) výsledky, pokud nemáte v číslovacím systému zcela jasno. Viz %V výše a příklad níže.

Příklad 2. Příklad čísel týdnů podle ISO 8601:1988

<?php
/*     December 2002 / January 2003
ISOWk  M   Tu  W   Thu F   Sa  Su
----- ----------------------------
51     16  17  18  19  20  21  22
52     23  24  25  26  27  28  29
1      30  31   1   2   3   4   5
2       6   7   8   9  10  11  12
3      13  14  15  16  17  18  19   */

// Vypíše: 28.12.2002 - %V,%G,%Y = 52,2002,2002
echo "28.12.2002 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/28/2002")) . "\n";

// Vypíše: 30.12.2002 - %V,%G,%Y = 1,2003,2002
echo "30.12.2002 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/30/2002")) . "\n";

// Vypíše: 3.1.2003 - %V,%G,%Y = 1,2003,2003
echo "3.1.2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2003")) . "\n";

// Vypíše: 10.1.2003 - %V,%G,%Y = 2,2003,2003
echo "10.1.2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/10/2003")) . "\n";



/*     December 2004 / January 2005
ISOWk  M   Tu  W   Thu F   Sa  Su
----- ----------------------------
51     13  14  15  16  17  18  19
52     20  21  22  23  24  25  26
53     27  28  29  30  31   1   2
1       3   4   5   6   7   8   9
2      10  11  12  13  14  15  16   */

// Vypíše: 23.12.2004 - %V,%G,%Y = 52,2004,2004
echo "23.12.2004 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/23/2004")) . "\n";

// Vypíše: 31.12.2004 - %V,%G,%Y = 53,2004,2004
echo "31.12.2004 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("12/31/2004")) . "\n";

// Vypíše: 2.1.2005 - %V,%G,%Y = 53,2004,2005
echo "2.1.2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/2/2005")) . "\n";

// Vypíše: 3.1.2005 - %V,%G,%Y = 1,2005,2005
echo "3.1.2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2005")) . "\n";

?>

Viz také setlocale(), mktime() a specifikaci Open Group strftime().