Datumsformate
Diese Seite beschreibt die verschiedenen Datumsformate, die der Parser von DateTimeImmutable, DateTime, date_create(), date_create_immutable() und strtotime() versteht.
Beschreibung | Format | Beispiele |
---|---|---|
daysuf (Suffix für einen Tag des Monats) |
"st" | "nd" | "rd" | "th" | |
dd (Tag des Monats; ohne vorangestellte Null) |
([0-2]?[0-9] | "3"[01]) daysuf ? |
"7th", "22nd", "31" |
DD (Tag des Monats; zwei Ziffern mit vorangestellter Null) |
"0" [0-9] | [1-2][0-9] | "3" [01] | "07", "31" |
m (vollständiger oder abgekürzter Monatsname) |
'january' | 'february' | 'march' | 'april' | 'may' | 'june' | 'july' | 'august' | 'september' | 'october' | 'november' | 'december' | 'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' | 'sep' | 'sept' | 'oct' | 'nov' | 'dec' | "I" | "II" | "III" | "IV" | "V" | "VI" | "VII" | "VIII" | "IX" | "X" | "XI" | "XII" | |
M (Monatskürzel) |
'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' | 'sep' | 'sept' | 'oct' | 'nov' | 'dec' | |
mm (Nummer des Monats) |
"0"? [0-9] | "1"[0-2] | "0", "04", "7", "12" |
MM (Nummer des Monats; mit vorangestellter Null) |
"0" [0-9] | "1"[0-2] | "00", "04", "07", "12" |
y (Jahr) |
[0-9]{1,4} | "00", "78", "08", "8", "2008" |
yy (Jahr; zwei Ziffern) |
[0-9] | "00", "08", "78" |
YY (Jahr; vier Ziffern) |
[0-9] | "2000", "2008", "1978" |
Beschreibung | Format | Beispiele |
---|---|---|
Monat und Tag; amerikanische Schreibweise | mm "/" dd |
"5/12", "10/27" |
Monat, Tag und Jahr; amerikanische Schreibweise | mm "/" dd "/" y |
"12/22/78", "1/17/2006", "1/17/6" |
Jahr (vier Ziffern), Monat und Tag; getrennt durch Schrägstriche | YY "/" mm "/" dd |
"2008/6/30", "1978/12/22" |
Jahr (vier Ziffern) und Monat (GNU) | YY "-" mm |
"2008-6", "2008-06", "1978-12" |
Jahr, Monat und Tag; getrennt durch Bindestriche | y "-" mm "-" dd |
"2008-6-30", "78-12-22", "8-6-21" |
Tag, Monat und Jahr (vier Ziffern); getrennt durch Punkte, Tabulatorzeichen oder Bindestriche | dd [.\t-] mm [.-] YY |
"30-6-2008", "22.12.1978" |
Tag, Monat und Jahr (zwei Ziffern); getrennt durch Punkte oder Tabulatorzeichen | dd [.\t] mm "." yy |
"30.6.08", "22\t12.78" |
Tag, Monat (textuell) und Jahr | dd ([ \t.-])* m ([ \t.-])* y |
"30-June 2008", "22DEC78", "14 III 1879" |
Monat (textuell) und Jahr (vier Ziffern); der Tag wird auf den 1. zurückgesetzt | m ([ \t.-])* YY |
"June 2008", "DEC1978", "March 1879" |
Jahr (vier Ziffern) und Monat (textuell); der Tag wird auf den 1. zurückgesetzt | YY ([ \t.-])* m |
"2008 June", "1978-XII", "1879.MArCH" |
Monat (textuell), Tag und Jahr | m ([ .\t-])* dd [,.stndrh\t ]+ y |
"July 1st, 2008", "April 17, 1790", "May.9,78" |
Monat (textuell) und Tag | m ([ .\t-])* dd [,.stndrh\t ]* |
"July 1st,", "Apr 17", "May.9" |
Tag und Monat (textuell) | dd ([ .\t-])* m |
"1 July", "17 Apr", "9.May" |
Monatskürzel, Tag und Jahr | M "-" DD "-" y |
"May-09-78", "Apr-17-1790" |
Jahr, Monatskürzel und Tag | y "-" M "-" DD |
"78-Dec-22", "1814-MAY-17" |
Jahr (und zwar nur das Jahr) | YY |
"1978", "2008" |
Monat (textuell) (und zwar nur der Monat) | m |
"March", "jun", "DEC" |
Beschreibung | Format | Beispiele |
---|---|---|
Acht Ziffern für Jahr, Monat und Tag | YY MM DD |
"15810726", "19780417", "18140517" |
Jahr (vier Ziffern), Monat und Tag; getrennt durch Schrägstriche | YY "/" MM "/" DD |
"2008/06/30", "1978/12/22" |
Jahr (zwei Ziffern), Monat und Tag; getrennt durch Schrägstriche | yy "-" MM "-" DD |
"08-06-30", "78-12-22" |
Jahr (vier Ziffern, optional mit Vorzeichen), Monat und Tag | [+-]? YY "-" MM "-" DD |
"-0002-07-26", "+1978-04-17", "1814-05-17" |
Hinweis:
Bei den Formaten
y
undyy
werden Jahreszahlen unter 100 auf besondere Weise behandelt. Liegt die Jahreszahl im Bereich 0-69 (einschließlich), wird 2000 addiert, liegt sie im Bereich 70-99 (einschließlich), wird 1900 addiert. Das bedeutet, dass "00-01-01" als "2000-01-01" interpretiert wird.
Hinweis:
Das Format "Tag, Monat und Jahr (zwei Ziffern); getrennt durch Punkte oder Tabulatorzeichen" (
dd
[.\t]mm
". "yy
) funktioniert nur für Jahre im Bereich 61-99 (einschließlich). Außerhalb dieses Bereichs hat das Zeitformat "HH
[.:]MM
[.:]SS
" Vorrang.
Hinweis:
Das Format "Jahr (und zwar nur das Jahr)" funktioniert nur, wenn die Zeitangabe bereits gefunden wurde. Andernfalls werden die vier Ziffern als
HH
MM
interpretiert.
Es ist möglich, die Formate dd
und
DD
zu über- oder unterschreiten. Dabei bezeichnet der
Tag 0 den letzten Tag des vorherigen Monats, während eine Überschreitung
zum nächsten Monat gezählt wird. Somit entspricht "2008-08-00" dem
"2008-07-31" und "2008-06-31" dem "2008-07-01" (der Juni hat nur 30 Tage).
Wie aus dem obigen regulären Ausdruck hervorgeht, ist der Wertebereich für den Tag auf 0-31 beschränkt. So ist z. B. "2008-06-32" keine gültige Datumsangabe.
Es ist auch möglich, die Formate mm
und
MM
mit dem Wert 0 zu unterschreiten. Dabei steht der
Monat 0 für den Dezember des Vorjahres. Zum Beispiel ist "2008-00-22"
gleichbedeutend mit "2007-12-22".
Wenn die beiden vorherigen Fälle kombiniert werden und sowohl der Tag als auch der Monat unterlaufen werden, geschieht Folgendes: "2008-00-00" wird zunächst in "2007-12-00" umgewandelt, das dann in "2007-11-30" umgewandelt wird. Dies geschieht auch mit der Zeichenkette "0000-00-00", die in "-0001-11-30" umgewandelt wird (das Jahr -1 im ISO 8601-Kalender, das dem Jahr 2 vor Christus im proleptischen gregorianischen Kalender entspricht).