Formatos de Data

Esta página descreve os diferentes formatos de data que os interpretadores strtotime(), DateTime e date_create() entendem.

Simbolos Utilizados
Descrição Formato Exemplos
daysuf "st" | "nd" | "rd" | "th"  
dd ([0-2]?[0-9] | "3"[01]) daysuf? "7th", "22nd", "31"
DD "0" [0-9] | [1-2][0-9] | "3" [01] "07", "31"
m '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 'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' | 'sep' | 'sept' | 'oct' | 'nov' | 'dec'  
mm "0"? [0-9] | "1"[0-2] "0", "04", "7", "12"
MM "0" [0-9] | "1"[0-2] "00", "04", "07", "12"
y [0-9]{1,4} "00", "78", "08", "8", "2008"
yy [0-9]{2} "00", "08", "78"
YY [0-9]{4} "2000", "2008", "1978"
Notações Localizadas
Descrição Formato Exemplos
Dia e mês americano mm "/" dd "5/12", "10/27"
Dia, mês e ano americano mm "/" dd "/" y "12/22/78", "1/17/2006", "1/17/6"
Ano com quatro dígitos, mês e dia com barras YY "/" mm "/" dd "2008/6/30", "1978/12/22"
Ano com quatro dígitos e mês (GNU) YY "-" mm "2008-6", "2008-06", "1978-12"
Ano, mês e dia com traços y "-" mm "-" dd "2008-6-30", "78-12-22", "8-6-21"
Dia, mês e ano, com quatro dígitos, com pontos, tabulações ou traços dd [.\t-] mm [.-] YY "30-6-2008", "22.12.1978"
Dia, mês e ano, com dois dígitos, com pontos ou tabulações dd [.\t] mm "." yy "30.6.08", "22\t12.78"
Dia, mês textual e ano dd ([ \t.-])* m ([ \t.-])* y "30-June 2008", "22DEC78", "14 III 1879"
Mês textual e ano com quatro dígitos (O dia é redefinido para 1) m ([ \t.-])* YY "June 2008", "DEC1978", "March 1879"
Ano com quatro dígitos e mês textual (O dia é redefinido para 1) YY ([ \t.-])* m "2008 June", "1978-XII", "1879.MArCH"
Mês textual, dia e ano m ([ .\t-])* dd [,.stndrh\t ]+ y "July 1st, 2008", "April 17, 1790", "May.9,78"
Mês textual e dia m ([ .\t-])* dd [,.stndrh\t ]* "July 1st,", "Apr 17", "May.9"
Dia e mês textual d ([ .\t-])* m "1 July", "17 Apr", "9.May"
Mês abreviado, dia e ano M "-" DD "-" y "May-09-78", "Apr-17-1790"
Ano, mês abreviado e dia y "-" M "-" DD "78-Dec-22", "1814-MAY-17"
Ano (somente o ano) YY "1978", "2008"
Mês textual (somente o mês) m "March", "jun", "DEC"
Notação ISO8601
Descrição Formato Exemplos
Ano com oito dígitos, mês e dia YY MM DD "15810726", "19780417", "18140517"
Ano com quatro dígitos, mês e dia com barras YY "/" MM "/" DD "2008/06/30", "1978/12/22"
Ano com dois dígitos, mês e dia com traços yy "-" MM "-" DD "08-06-30", "78-12-22"
Ano com quatro dígitos, com sinal opcional, mês e dia [+-]? YY "-" MM "-" DD "-0002-07-26", "+1978-04-17", "1814-05-17"

Nota:

Para os formatos y e yy, anos abaixo de 100 são manipulados de maneira especial quando os símbolos y ou yy são utilizados. Se o ano cair no período de 0 (incluso) a 69 (incluso), 2000 anos são adicionados. Se o ano cair no período de 70 (incluso) a 99 (incluso), então 1900 são adicionados. Isso significa que "00-01-01" será interpretado como "2000-01-01".

Nota:

O formato "Dia, mês e ano com dois dígitos, com pontos ou tabulações" (dd [.\t] mm "." yy) somente funciona para valores de ano que variam 61 (incluso) até 99 (incluso) - fora destes anos, o formato de tempo "HH [.:] MM [.:] SS" possui precedência.

Nota:

O formato "Ano (somente o ano)", somente funcionará se uma string de tempo já foi encontrada -- caso contrário o formato será reconhecida como HH MM.

Nota:

É possível exceder positivamente e negativamente os formatos dd e DD. Dia 0 corresponde a último dia do mês anterior, assim como excedências positivas contam no próximo mês. Isso faz com que "2008-08-00" seja equivalente a "2008-07-31" e "2008-07-31" seja equivalente a "2008-07-01" (Junho possui somente 30 dias).

É possível exceder negativamente os formatos mm and MM com o valor 0. O valor de mês 0 corresponde a Dezembro do mês anterior. Como exemplo, "2008-00-22" é equivalente a "2007-12-22".

Se você combinar os dois fatos e exceder negativamente o dia e o mês, o que segue acontece: "2008-00-00" primeiro será convertido para "2007-12-00" que então será convertido para "2007-11-30". Isso também acontece com a string "0000-00-00", que é transformada em "-0001-11-30" (o ano -1 ano calendário ISO 8601, que é 2 anos DC no calendário que antecede o calendário Gregoriano).

add a note add a note

User Contributed Notes 1 note

up
1
Mirek
4 years ago
Note: the day (dd or DD) is first checked for range 0..31 and only if it fits, the overflow and underflow mechanism may apply. If not, strtotime() simply returns false.
If you need unlimited over/underflow for date calculations (for example 2015-01-40 to 2015-02-09), use mktime() instead.
To Top