Forum und email

strftime

(PHP 4, PHP 5)

strftime — Formatiert eine Zeit-/Datumsangabe nach den lokalen Einstellungen

Beschreibung:

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

Gibt einen String zurück, der den angegebenen Formatierungs-Merkmalen entspricht. Dabei wird der gegebene Timestamp / Zeitstempel oder - falls dieser fehlt - die momentane lokale Zeit benutzt. Der Monats- und Wochentagsname wird entsprechend des per setlocale() eingestellten Wertes gesetzt.

Nachfolgend die im Formatierungsstring gültigen / bekannten Platzhalter:

  • %a - abgekürzter Name des Wochentages, abhängig von der gesetzten Umgebung
  • %A - ausgeschriebener Name des Wochentages, abhängig von der gesetzten Umgebung
  • %b - abgekürzter Name des Monats, abhängig von der gesetzten Umgebung
  • %B - ausgeschriebener Name des Monats, abhängig von der gesetzten Umgebung
  • %c - Wiedergabewerte für Datum und Zeit, abhängig von der gesetzten Umgebung
  • %C - Jahrhundert (Jahr geteilt durch 100, gekürzt auf Integer, Wertebereich 00 bis 99)
  • %d - Tag des Monats als Zahl (Bereich 01 bis 31)
  • %D - so wie %m/%d/%y
  • %e - Tag des Monats als Dezimal-Wert, einstelligen Werten wird ein Leerzeichen voran gestellt (Wertebereich ´ 1´ bis ´31´)
  • %g - wie %G, aber ohne Jahrhundert.
  • %G - Das vierstellige Jahr entsprechend der ISO Wochennummer (siehe %V). Das gleiche Format und der gleiche Wert wie bei %Y. Besonderheit: entspricht die ISO Wochennummer dem vorhergehenden oder folgenden Jahr, wird dieses Jahr verwendet.
  • %h - so wie %b
  • %H - Stunde als Zahl im 24-Stunden-Format (Bereich 00 bis 23)
  • %I - Stunde als Zahl im 12-Stunden-Format (Bereich 01 bis 12)
  • %j - Tag des Jahres als Zahl (Bereich 001 bis 366)
  • %m - Monat als Zahl (Bereich 01 bis 12)
  • %M - Minute als Dezimal-Wert
  • %n - neue Zeile
  • %p - entweder `am' oder `pm' (abhängig von der gesetzten Umgebung) oder die entsprechenden Zeichenketten der gesetzten Umgebung
  • %r - Zeit im Format a.m. oder p.m.
  • %R - Zeit in der 24-Stunden-Formatierung
  • %S - Sekunden als Dezimal-Wert
  • %t - Tabulator
  • %T - aktuelle Zeit, genau wie %H:%M:%S
  • %u - Tag der Woche als Dezimal-Wert [1,7], dabei ist 1 der Montag.
    Warnung

    Sun Solaris scheint mit dem Sonntag als 1 zu starten, obwohl ISO 9889:1999 (der aktuelle C Standard) klar festlegt, dass es der Montag sein sollte.

  • %U - Nummer der Woche des aktuellen Jahres als Dezimal-Wert, beginnend mit dem ersten Sonntag als erstem Tag der ersten Woche.
  • %V - Kalenderwoche (nach ISO 8601:1988) des aktuellen Jahres. Als Dezimal-Zahl mit dem Wertebereich 01 bis 53, wobei die Woche 01 die erste Woche mit mindestens 4 Tagen im aktuellen Jahr ist. Die Woche beginnt montags (nicht sonntags). (Benutzen Sie %G or %g für die Jahreskomponente, die der Wochennummer für den gegebenen Timestamp entspricht.)
  • %w - Wochentag als Dezimal-Wert, Sonntag ist 0
  • %W - Nummer der Woche des aktuellen Jahres, beginnend mit dem ersten Montag als erstem Tag der ersten Woche.
  • %x - bevorzugte Datumswiedergabe (ohne Zeit), abhängig von der gesetzten Umgebung.
  • %X - bevorzugte Zeitwiedergabe (ohne Datum), abhängig von der gesetzten Umgebung.
  • %y - Jahr als 2-stellige-Zahl (Bereich 00 bis 99)
  • %Y - Jahr als 4-stellige-Zahl inklusive des Jahrhunderts
  • %Z - Zeitzone, Name oder eine Abkürzung
  • %% - ein %-Zeichen

Hinweis: Es ist durchaus möglich, dass Ihre C-Bibliothek nicht alle angegebenen Formatierungszeichen erkennt. In diesem Fall werden diese Zeichen von der PHP-Funktion strftime() nicht unterstützt. Zusätzlich unterstützen nicht alle Plattformen negative Werte eines Timestamps, deshalb könnte der Wertebereich eines Datums durch den Beginn der Unix Epoche begrenzt sein. Das bedeutet, dass z.B. %e, %T, %R und %D (und vielleicht noch weitere) und Zeitangaben vor dem Jan 1, 1970 auf Windowssystemen, einigen Linuxdisrtibutionen und einigen anderen Betriebssytemen nicht funktionieren. Für Windowsbetriebssysteme finden Sie eine komplette Übersicht der gültigen / bekannten Platzhalter im Formatierungsstring auf dieser » MSDN Webseite.

Example#1 strftime() locale Beispiel

<?php
setlocale
(LC_TIME"C");
echo 
strftime("%A");
setlocale(LC_TIME"fi_FI");
echo 
strftime(" in Finnish is %A,");
setlocale(LC_TIME"fr_FR");
echo 
strftime(" in French %A and");
setlocale(LC_TIME"de_DE");
echo 
strftime(" in German %A.\n");
?>
Dieses Beispiel funktioniert nur, wenn auf Ihrem System die entsprechenden Locale-Codes installiert sind.

Hinweis: %G und %V basieren auf ISO 8601:1988 Wochennummern und können unerwartete (obwohl korrekte) Ergebnisse liefern, wenn Sie das Nummernsystem nicht gründlich verstehen. Sehen Sie weiter oben bei %V nach und beachten Sie die folgenden Beispiele.

Example#2 ISO 8601:1988 Wochennummer Beispiel

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

// Ausgabe: 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";

// Ausgabe: 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";

// Ausgabe: 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";

// Ausgabe: 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   */

// Ausgabe: 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";

// Ausgabe: 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";

// Ausgabe: 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";

// Ausgabe: 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";

?>

Siehe auch setlocale(), mktime() und die » Open Group Spezifikation von strftime().