(PHP 4, PHP 5, PHP 7)
strftime — Formatiere eine Zeit-/Datumsangabe gemäß dem Gebietsschema
$format
[, int $timestamp
= time()
] ) : stringFormatiere eine Zeit-/Datumsangabe gemäß dem Gebietsschema. Monats- und Wochentagsnamen sowie andere sprachabhängige Zeichenketten werden entsprechend des per setlocale() eingestellten Wertes dargestellt.
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 Linuxdistributionen und einigen anderen Betriebssytemen nicht funktionieren. Für Windowsbetriebssysteme finden Sie eine komplette Übersicht der gültigen Platzhalter im Formatierungsstring im » MSDN.
format
format |
Beschreibung | Wertebeispiel |
---|---|---|
Tag | --- | --- |
%a | Abgekürzter Name des Wochentages | So bis Sa |
%A | Ausgeschriebener Name des Wochentages | Sonntag bis Samstag |
%d | Tag des Monats als zweistellige Zahl (ggf. mit vorangestellten Nullen) | 01 bis 31 |
%e | Tag des Monats als Dezimal-Wert; einstelligen Werten wird ein Leerzeichen voran gestellt. Unter Windows nicht wie beschrieben implementiert; siehe weiter unten für weitere Informationen. | 1 bis 31 |
%j | Tag des Jahres als dreistellige Zahl, ggf. mit vorangestellten Nullen | 001 bis 366 |
%u | ISO-8601 numerische Darstellung des Wochentages | 1 (für Montag) bis 7 (für Sonntag) |
%w | Numerische Darstellung des Wochentags | 0 (für Sonntag) bis 6 (für Samstag) |
Woche | --- | --- |
%U | Nummer der Kalenderwoche des gegebenen Jahres, beginnend mit dem ersten Sonntag als erste Woche | 13 (für die 13. Kalenderwoche des Jahres) |
%V | ISO-8601:1988 Kalenderwochennummer des gegebenen Jahres, beginnend mit der ersten Woche des Jahres mit wenigstens 4 Wochentagen, wobei Montag der Start der Kalenderwoche ist | 01 bis 53 (wobei 53 eine überlappende Woche repräsentiert) |
%W | Numerische Darstellung der Kalenderwoche, beginnend mit dem ersten Montag als erste Woche | 46 (für die 46. Woche des Jahres, die mit einem Montag beginnt) |
Monat | --- | --- |
%b | Abgekürzter Monatsname gemäß dem Gebietsschema | Jan bis Dez |
%B | Vollständiger Monatsname gemäß dem Gebietsschema | Januar bis Dezember |
%h | Abgekürzter Monatsname gemäß dem Gebietsschema (ein Alias von %b) | Jan bis Dez |
%m | Zweistellige numerische Darstellung des Monats | 01 (für Januar) bis 12 (für Dezember) |
Jahr | --- | --- |
%C | Zweistellige numerische Darstellung des Jahrhunders (Jahr geteilt durch 100, abgerundet zu einer Ganzzahl) | 19 für das 20. Jahrhundert |
%g | Zweistellige numerische Darstellung des Jahres gemäß dem ISO-8601:1988 Standard (siehe %V) | Beispiel: 09 für die Woche des 6. Januar 2009 |
%G | Die vollständige vierstellige numerische Version von %g | Beispiel: 2008 für die Woche des 3. Januar 2009 |
%y | Zweistellige numerische Darstellung des Jahres | Beispiel: 09 für 2009, 79 für 1979 |
%Y | Vierstellige numerische Darstellung des Jahres | Beispiel: 2038 |
Zeit | --- | --- |
%H | Zweistellige numerische Darstellung der Stunde im 24-Stunden-Format | 00 bis 23 |
%k | Stunde im 24-Stunden-Format mit einem Leerzeichen vor einstelligen Stunden | 0 bis 23 |
%I | Zweistellige numerische Darstellung der Stunde im 12-Stunden-Format | 01 bis 12 |
%l (kleines 'L') | Stunde im 12-Stunden-Format mit einem Leerzeichen vor einstelligen Stunden | 1 bis 12 |
%M | Zweistellige numerische Darstellung der Minute | 00 bis 59 |
%p | 'AM' oder 'PM' in Großbuchstaben, basierend auf der gegebenen Zeit | Beispiel: AM für 00:31, PM für 22:23 |
%P | 'am' oder 'pm' in Kleinbuchstaben, basierend auf der gegebenen Zeit | Beispiel: am für 00:31, pm für 22:23 |
%r | Das gleiche wie "%I:%M:%S %p" | Beispiel: 09:34:17 PM für 21:34:17 |
%R | Das gleiche wie "%H:%M" | Beispiel: 00:35 für 12:35 AM, 16:44 für 4:44 PM |
%S | Zweistellige numerische Darstellung der Sekunde | 00 bis 59 |
%T | Das gleiche wie "%H:%M:%S" | Beispiel: 21:34:17 für 09:34:17 PM |
%X | Bevorzugte Zeitdarstellung gemäß dem Gebietsschema, ohne Datumsangabe | Beispiel: 03:59:16 oder 15:59:16 |
%z | Der Zeitzonen-Versatz. Unter Windows nicht wie beschrieben implementiert; siehe weiter unten für weitere Informationen. | Beispiel: -0500 für US Eastern Time |
%Z | Das Zeitzonenkürzel. Unter Windows nicht wie beschrieben implementiert; siehe weiter unten für weitere Informationen. | Beispiel: EST für Eastern Time |
Datums- und Zeitstempel | --- | --- |
%c | Bevorzugter Datums- und Zeitstempel gemäß dem Gebietsschema | Beispiel: 05.02.2009 00:45:10 für den 5. Februar 2009 um 00:45:10 |
%D | Das gleiche wie "%m/%d/%y" | Example: 02/05/09 für den 5. Februar 2009 |
%F | Same as "%Y-%m-%d" (oft verwendet für Datenbankzeitstempel) | Example: 2009-02-05 für den 5. Februar 2009 |
%s | Zeitstempel der Unix-Epochenzeit (das gleiche wie die time() Funktion) | Beispiel: 305815200 für den 10. September 1979, 08:40:00 |
%x | Bevorzugte Datumsdarstellung gemäß dem Gebietsschema, ohne Zeitangabe | Beispiel: 02/05/09 für den 5. Februar 2009 |
Verschiedenes | --- | --- |
%n | Ein Zeilenvorschubzeichen ("\n") | --- |
%t | Ein Tabulatorzeichen ("\t") | --- |
%% | Ein buchstäbliches Prozentzeichen ("%") | --- |
Die Höchstlänge dieses Parameters sind 1023 Zeichen.
Im Gegensatz zu ISO-9899:1999 beginnt mit Sonntag als 1. Daraus folgt, dass %u nicht wie in diesem Handbuch beschrieben funktionieren kann.
Nur für Windows:
Der %e Platzhalter wird nicht in der Windows Implementierung dieser Funktion unterstützt. Um diesen Wert zu erhalten, kann der %#d Platzhalter statt dessen verwendet werden. Das Beispiel weiter unten zeigt wie eine Plattform übergreifende kompatible Funktion geschrieben werden kann.
Die %z und %Z Platzhalter geben beide den Namen der Zeitzone anstelle des Versatzes oder des Kürzels zurück.
Nur für macOS: Der %P Platzhalter wird nicht in der macOS Implementierung dieser Funktion unterstüzt.
timestamp
Der optionale Parameter timestamp
ist ein Unix
Timestamp als integer oder die aktuelle lokale Zeit
wenn kein timestamp
übergeben wurde. Er entspricht
dann also dem Ergebnis der Funktion
time().
Gibt eine Zeichenkette zurück, die gemäß format
unter Verwendung des angegebenen timestamp
oder der
aktuellen Ortszeit, falls kein Zeitstempel angegeben wurde, formatiert ist.
Monats- und Wochentagsnamen sowie andere sprachabhängige Zeichenketten werden
entsprechend des per setlocale() eingestellten Wertes
dargestellt.
Jeder Aufruf der Datums- und Zeitfunktionen
generiert eine E_NOTICE
-Warnung,
wenn die Zeitzone ungültig ist und eine E_STRICT
-Nachricht
oder eine E_WARNING
-Warnung,
wenn die Systemeinstellung oder die TZ-Umgebungsvariable
genutzt wird. Siehe auch date_default_timezone_set()
Da die Ausgabe von der unterliegenden C-Bibliothek abhängt, werden einige
Konversionsangaben nicht unterstützt. Unter Window führt die Angabe von
Konversionsangaben zu 5 E_WARNING
Meldungen, und die
Funktion gibt FALSE
zurück. Unter anderen Betriebssystemen werden unter
Umständen keine E_WARNING
Meldungen erzeugt, und die
Ausgabe kann die Konversionsangaben unverändert enthalten.
Version | Beschreibung |
---|---|
5.1.0 |
Erzeugt nun |
Dieses Beispiel funktioniert nur, wenn auf Ihrem System die entsprechenden Locales installiert sind.
Beispiel #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");
?>
Beispiel #2 ISO 8601:1988 Wochennummer Beispiel
<?php
/* Dezember 2002 / Januar 2003
ISOWk Mo Di Mi Do Fr Sa So
----- ----------------------------
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: 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";
// Ausgabe: 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";
// Ausgabe: 03.01.2003 - %V,%G,%Y = 1,2003,2003
echo "03.01.2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2003")) . "\n";
// Ausgabe: 10.01.2003 - %V,%G,%Y = 2,2003,2003
echo "10.01.2003 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/10/2003")) . "\n";
/* Dezember 2004 / Januar 2005
ISOWk Mo Di Mi Do Fr Sa So
----- ----------------------------
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: 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";
// Ausgabe: 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";
// Ausgabe: 02.01.2005 - %V,%G,%Y = 53,2004,2005
echo "02.01.2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/2/2005")) . "\n";
// Ausgabe: 03.01.2005 - %V,%G,%Y = 1,2005,2005
echo "03.01.2005 - %V,%G,%Y = " . strftime("%V,%G,%Y",strtotime("1/3/2005")) . "\n";
?>
Beispiel #3 Plattform übergreifendes Beispiel unter Verwendung des %e Platzhalters
<?php
// 1. Januar ergibt: '%e%1%' (%%, e, %%, %e, %%)
$format = '%%e%%%e%%';
// Prüfe auf Windows, um den %e Platzhalter korrekt zu ersetzen
if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
$format = preg_replace('#(?<!%)((?:%%)*)%e#', '\1%#d', $format);
}
echo strftime($format);
?>
Beispiel #4 Zeige alle bekannten und unbekannten Formate an.
<?php
// Beschreibe die Formate.
$strftimeFormats = array(
'A' => 'Ausgeschriebener Name des Wochentages',
'B' => 'Vollständiger Monatsname gemäß dem Gebietsschema',
'C' => 'Zweistellige numerische Darstellung des Jahrhunders (Jahr geteilt durch 100, abgerundet zu einer Ganzzahl)',
'D' => 'Das gleiche wie "%m/%d/%y"',
'E' => '',
'F' => 'Same as "%Y-%m-%d"',
'G' => 'Die vollständige vierstellige numerische Version von %g',
'H' => 'Zweistellige numerische Darstellung der Stunde im 24-Stunden-Format',
'I' => 'Zweistellige numerische Darstellung der Stunde im 12-Stunden-Format',
'J' => '',
'K' => '',
'L' => '',
'M' => 'Zweistellige numerische Darstellung der Minute',
'N' => '',
'O' => '',
'P' => '"am" oder "pm" in Kleinbuchstaben, basierend auf der gegebenen Zeit',
'Q' => '',
'R' => 'Das gleiche wie "%H:%M"',
'S' => 'Zweistellige numerische Darstellung der Sekunde',
'T' => 'Das gleiche wie "%H:%M:%S"',
'U' => 'Nummer der Kalenderwoche des gegebenen Jahres, beginnend mit dem ersten Sonntag als erste Woche',
'V' => 'ISO-8601:1988 Kalenderwochennummer des gegebenen Jahres, beginnend mit der ersten Woche des Jahres mit wenigstens 4 Wochentagen, wobei Montag der Start der Kalenderwoche ist',
'W' => 'Numerische Darstellung der Kalenderwoche, beginnend mit dem ersten Montag als erste Woche',
'X' => 'Bevorzugte Zeitdarstellung gemäß dem Gebietsschema, ohne Datumsangabe',
'Y' => 'Vierstellige numerische Darstellung des Jahres',
'Z' => 'Das Zeitzonenkürzel oder die Zeitzone (abhängig vom Betriebssystem)',
'a' => 'Abgekürzter Name des Wochentages',
'b' => 'Abgekürzter Monatsname gemäß dem Gebietsschema',
'c' => 'Bevorzugter Datums- und Zeitstempel gemäß dem Gebietsschema',
'd' => 'Tag des Monats als zweistellige Zahl (ggf. mit vorangestellten Nullen)',
'e' => 'Tag des Monats als Dezimal-Wert; einstelligen Werten wird ein Leerzeichen voran gestellt',
'f' => '',
'g' => 'Zweistellige numerische Darstellung des Jahres gemäß dem ISO-8601:1988 Standard (siehe %V)',
'h' => 'Abgekürzter Monatsname gemäß dem Gebietsschema (ein Alias von %b)',
'i' => '',
'j' => 'Tag des Jahres als dreistellige Zahl, ggf. mit vorangestellten Nullen',
'k' => 'Stunde im 24-Stunden-Format mit einem Leerzeichen vor einstelligen Stunden',
'l' => 'Stunde im 12-Stunden-Format mit einem Leerzeichen vor einstelligen Stunden',
'm' => 'Zweistellige numerische Darstellung des Monats',
'n' => 'Ein Zeilenvorschubzeichen ("\n")',
'o' => '',
'p' => '"AM" oder "PM" in Großbuchstaben, basierend auf der gegebenen Zeit',
'q' => '',
'r' => 'Das gleiche wie "%I:%M:%S %p"',
's' => 'Zeitstempel der Unix-Epochenzeit',
't' => 'Ein Tabulatorzeichen ("\t")',
'u' => 'ISO-8601 numerische Darstellung des Wochentages',
'v' => '',
'w' => 'Numerische Darstellung des Wochentags',
'x' => 'Bevorzugte Datumsdarstellung gemäß dem Gebietsschema, ohne Zeitangabe',
'y' => 'Zweistellige numerische Darstellung des Jahres',
'z' => 'Entweder der Zeitzonenversatz zu UTC oder das Zeitzonenkürzel (depends on operating system)',
'%' => 'Ein buchstäbliches Prozentzeichen ("%")',
);
// Ergebnisse.
$strftimeValues = array();
// Werte die Formate aus während jegliche Fehler unterdrückt werden.
foreach($strftimeFormats as $format => $description){
if (False !== ($value = @strftime("%{$format}"))){
$strftimeValues[$format] = $value;
}
}
// Ermittle den längsten Wert.
$maxValueLength = 2 + max(array_map('strlen', $strftimeValues));
// Berichte bekannte Formate.
foreach($strftimeValues as $format => $value){
echo "Bekanntes Format : '{$format}' = ", str_pad("'{$value}'", $maxValueLength), " ( {$strftimeFormats[$format]} )\n";
}
// Berichte unbekannte Formate.
foreach(array_diff_key($strftimeFormats, $strftimeValues) as $format => $description){
echo "Unbekanntes Format : '{$format}' ", str_pad(' ', $maxValueLength), ($description ? " ( {$description} )" : ''), "\n";
}
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
Bekanntes Format : 'A' = 'Freitag' ( Ausgeschriebener Name des Wochentages ) Bekanntes Format : 'B' = 'Dezember' ( Vollständiger Monatsname gemäß dem Gebietsschema ) Bekanntes Format : 'C' = '20' ( Zweistellige numerische Darstellung des Jahrhunders (Jahr geteilt durch 100, abgerundet zu einer Ganzzahl) ) Bekanntes Format : 'D' = '12/03/10' ( Das gleiche wie "%m/%d/%y" ) Bekanntes Format : 'F' = '2010-12-03' ( Same as "%Y-%m-%d" ) Bekanntes Format : 'G' = '2010' ( Die vollständige vierstellige numerische Version von %g ) Bekanntes Format : 'H' = '11' ( Zweistellige numerische Darstellung der Stunde im 24-Stunden-Format ) Bekanntes Format : 'I' = '11' ( Zweistellige numerische Darstellung der Stunde im 12-Stunden-Format ) Bekanntes Format : 'M' = '24' ( Zweistellige numerische Darstellung der Minute ) Bekanntes Format : 'R' = '11:24' ( Das gleiche wie "%H:%M" ) Bekanntes Format : 'S' = '44' ( Zweistellige numerische Darstellung der Sekunde ) Bekanntes Format : 'T' = '11:24:44' ( Das gleiche wie "%H:%M:%S" ) Bekanntes Format : 'U' = '48' ( Nummer der Kalenderwoche des gegebenen Jahres, beginnend mit dem ersten Sonntag als erste Woche ) Bekanntes Format : 'V' = '48' ( ISO-8601:1988 Kalenderwochennummer des gegebenen Jahres, beginnend mit der ersten Woche des Jahres mit wenigstens 4 Wochentagen, wobei Montag der Start der Kalenderwoche ist ) Bekanntes Format : 'W' = '48' ( Numerische Darstellung der Kalenderwoche, beginnend mit dem ersten Montag als erste Woche ) Bekanntes Format : 'X' = '11:24:44' ( Bevorzugte Zeitdarstellung gemäß dem Gebietsschema, ohne Datumsangabe ) Bekanntes Format : 'Y' = '2010' ( Vierstellige numerische Darstellung des Jahres ) Bekanntes Format : 'Z' = 'Mitteleuropäische Zeit' ( Das Zeitzonenkürzel oder die Zeitzone (abhängig vom Betriebssystem) ) Bekanntes Format : 'a' = 'Fr' ( Abgekürzter Name des Wochentages ) Bekanntes Format : 'b' = 'Dez' ( Abgekürzter Monatsname gemäß dem Gebietsschema ) Bekanntes Format : 'c' = '03.12.2010 11:24:44' ( Bevorzugter Datums- und Zeitstempel gemäß dem Gebietsschema ) Bekanntes Format : 'd' = '03' ( Tag des Monats als zweistellige Zahl (ggf. mit vorangestellten Nullen) ) Bekanntes Format : 'e' = ' 3' ( Tag des Monats als Dezimal-Wert; einstelligen Werten wird ein Leerzeichen voran gestellt ) Bekanntes Format : 'g' = '10' ( Zweistellige numerische Darstellung des Jahres gemäß dem ISO-8601:1988 Standard (siehe %V) ) Bekanntes Format : 'h' = 'Dez' ( Abgekürzter Monatsname gemäß dem Gebietsschema (ein Alias von %b) ) Bekanntes Format : 'j' = '337' ( Tag des Jahres als dreistellige Zahl, ggf. mit vorangestellten Nullen ) Bekanntes Format : 'm' = '12' ( Zweistellige numerische Darstellung des Monats ) Bekanntes Format : 'n' = ' ' ( Ein Zeilenvorschubzeichen ("\n") ) Bekanntes Format : 'r' = '11:24:44' ( Das gleiche wie "%I:%M:%S %p" ) Bekanntes Format : 't' = ' ' ( Ein Tabulatorzeichen ("\t") ) Bekanntes Format : 'u' = '5' ( ISO-8601 numerische Darstellung des Wochentages ) Bekanntes Format : 'w' = '5' ( Numerische Darstellung des Wochentags ) Bekanntes Format : 'x' = '03.12.2010' ( Bevorzugte Datumsdarstellung gemäß dem Gebietsschema, ohne Zeitangabe ) Bekanntes Format : 'y' = '10' ( Zweistellige numerische Darstellung des Jahres ) Bekanntes Format : 'z' = '+0100' ( Entweder der Zeitzonenversatz zu UTC oder das Zeitzonenkürzel (depends on operating system) ) Bekanntes Format : '%' = '%' ( Ein buchstäbliches Prozentzeichen ("%") ) Unbekanntes Format : 'E' Unbekanntes Format : 'J' Unbekanntes Format : 'K' Unbekanntes Format : 'L' Unbekanntes Format : 'N' Unbekanntes Format : 'O' Unbekanntes Format : 'P' ( "am" oder "pm" in Kleinbuchstaben, basierend auf der gegebenen Zeit ) Unbekanntes Format : 'Q' Unbekanntes Format : 'f' Unbekanntes Format : 'i' Unbekanntes Format : 'k' ( Stunde im 24-Stunden-Format mit einem Leerzeichen vor einstelligen Stunden ) Unbekanntes Format : 'l' ( Stunde im 12-Stunden-Format mit einem Leerzeichen vor einstelligen Stunden ) Unbekanntes Format : 'o' Unbekanntes Format : 'p' ( "AM" oder "PM" in Großbuchstaben, basierend auf der gegebenen Zeit ) Unbekanntes Format : 'q' Unbekanntes Format : 's' ( Zeitstempel der Unix-Epochenzeit ) Unbekanntes Format : 'v'
Hinweis: %G und %V, die auf ISO 8601:1988 Wochennummern basieren, können unerwartete (obgleich richtige) Ergebnisse ergeben, wenn das Nummernsystem nicht gründlich verstanden wird. Siehe die %V Beispiele auf dieser Handbuchseite.