Forum und email

strftime

(PHP 4, PHP 5)

strftime — Helyi időstringet formáz a megadott formátum (és időpont) szerint

Leírás

string strftime ( string $format [, int $ timestamp ] )

A megadott formátumstringnek megfelelően formázott dátum-stringgel tér vissza, felhasználva a megadott timestamp paramétert, vagy ennek hiányában a helyi időt. Hónap, és napnevek, továbbá más nyelvfüggő stringek az setlocale() függvénnyel beállított értékeknek felelnek meg.

Az alábbi formátumstringeket ismeri fel a függvény:

  • %a - hét napja, rövidítve
  • %A - hét napja, teljes
  • %b - hónap neve, rövidítve
  • %B - hónap neve, teljes
  • %c - dátum és idő alapértelmezett formátumban
  • %C - évszám 2 utolsó jegy nélkül (trunc(év/100), értéke 00 és 99 között)
  • %d - nap, 2 számjegy ("01" .. "31")
  • %D - azonos %m/%d/%y-val
  • %e - nap, 2 karakter, extra szóközzel az egyjegyű számok előtt (" 1" .. "31")
  • %g - mint a %G, csak évszázad nélkül
  • %G - A 4-jegyű évszám, ami az ISO hétszámhoz tartozik (lásd a %V opciót). Ez azonos formátumú és értékű, mint a %Y, kivéve, hogy ha az ISO hétszám az előző, vagy a következő évhez tartozik, akkor azzal az évet adja.
  • %h - ugyanaz, mint a %b
  • %H - óra, 24-órás formátumban, 2 számjeggyel ("00" .. "23")
  • %I - óra, 12-órás formátumban, 2 számjeggyel ("01" .. "12")
  • %j - év napja, 3 számjegy ("001" .. "366" !!!)
  • %m - hónap, számmal ("01" .. "12") [van kitöltő szóköz]
  • %M - perc, [2 számjegy]
  • %n - újsor karakter
  • %p - `am' vagy `pm', annak megfelelően, hogy az adott időpont délelőtt, vagy délután van-e
  • %r - időpont 12 órás formátumban [pl.: 12:00:00 AM]
  • %R - időpont 24 órás formátumban [pl.: 00:00][Itt nincs másodperc!!!]
  • %S - másodperc [2 számjegy]
  • %t - tabulátor
  • %T - idő, azonos a %H:%M:%S-val
  • %u - hét napja, számmal [1,7], az 1 a hétfőt jelenti
    Warning

    Úgy tűnik, hogy Sun Solarison a vasárnap az 1-es, holott az ISO 9889:1999 (az aktuális C standard) világosan megmondja, hogy hétfőnek kell lennie.

  • %U - az aktuális év hányadik hetében járunk, a hét vasárnappal kezdődik, vagyis az "01" hét január első vasárnapján kezdődik. [Az első hét előtti napokat "00" hétnek jelzi!!!]
  • %V - Az ISO 8601:1988 hétszám ("01" .. 53), ahol az az első hét, amelynek legalább 4 napja van az újévben. A hét első napja hétfő. Használd a %G-t vagy a %g-t, ha egy év kell, ami egy időbélyeg hétszámához tartozik. [???] [Helyesen kezeli az előző évből átnyúló heteket is]
  • %W - év hete, az év első hétfőjén kezdődik az "01" hét
  • %w - hét napja számmal, a vasárnap a 0
  • %x - alapértelmezett dátumformátum idő nélkül
  • %X - alapértelmezett időpontformátum dátum nélkül
  • %y - év 2 számjeggyel ("00" .. "99")
  • %Y - év, évszázaddal együtt
  • %Z vagy %z- időzóna neve [3 betű]
  • %% - a `%' karakter

Note: Nem minden formátumstring van meg az összes C könyvtárban, ami azt jelenti, hogy a PHP strftime() függvényében sem lesznek elérhetők. Ráadásul nem minden platform támogatja a negatív időbélyegeket, ezért a előfordulhat, hogy nem használhatsz Unix Epoch előtti dátumot. Ez azt jelenti, hogy például a %e, %T, %R és a %D (esetleg egyebek is) nem fog működni 1970. január 1. előtti dátummal Windows-on, néhány Linux disztribűcióban, és még néhány egyéb operációs rendszeren. A Windows rendszerekre vonatkozóan a a támogatott konverzió leírókról található egy teljes áttekintés az » MSDN weboldalon.

Example#1 strftime() példa

<?php
setlocale
(LC_TIME"C");
echo 
strftime("%A");
setlocale(LC_TIME"fi_FI");
echo 
strftime(" finnül %A,");
setlocale(LC_TIME"fr_FR");
echo 
strftime(" franciául %A és ");
setlocale(LC_TIME"hu_HU");
echo 
strftime(" magyarul %A\n");
?>
Ez a példa akkor működik jól, ha a megfelelő locales beállításokat installálod.

Note: A %G és %V, amelyek az ISO 8601:1988 hétszámokra alapulnak, nem az elvárt (de a helyes) eredményt adják, ha nem értetted meg alaposan a számozási rendszert. Lásd a fenti %V-t valamint az alábbi példát week numbers can give unexpected (albeit correct) results if the numbering system is not thoroughly understood. See %V above and example below.

Example#2 ISO 8601:1988 hétszámozási példa

<?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   */

// Kimenet: 12/28/2002 - %V,%G,%Y = 52,2002,2002
echo "12/28/2002 - %V,%G,%Y = " strftime("%V,%G,%Y"strtotime("12/28/2002")) . "\n";

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

// Kimenet: 1/3/2003 - %V,%G,%Y = 1,2003,2003
echo "1/3/2003 - %V,%G,%Y = " strftime("%V,%G,%Y"strtotime("1/3/2003")) . "\n";

// Kimenet: 1/10/2003 - %V,%G,%Y = 2,2003,2003
echo "1/10/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   */

// Kimenet: 12/23/2004 - %V,%G,%Y = 52,2004,2004
echo "12/23/2004 - %V,%G,%Y = " strftime("%V,%G,%Y",strtotime("12/23/2004")) . "\n";

// Kimenet: 12/31/2004 - %V,%G,%Y = 53,2004,2004
echo "12/31/2004 - %V,%G,%Y = " strftime("%V,%G,%Y",strtotime("12/31/2004")) . "\n";

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

// Kimenet: 1/3/2005 - %V,%G,%Y = 1,2005,2005
echo "1/3/2005 - %V,%G,%Y = " strftime("%V,%G,%Y"strtotime("1/3/2005")) . "\n";

?>

Lásd még setlocale() és mktime(), strptime() és az » Open Group specification of strftime()() függvényeket.