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:

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