PHP 7.0.0 Beta 2 Released

Formatos de fecha

Esta página describe los diferentes formatos de fecha que entiede el analizador de strtotime(), DateTime y date_create().

Símbolos empleados
Descripción Formato Ejemplos
sufijos de día (en inglés) "st" | "nd" | "rd" | "th"  
dd ([0-2]?[0-9] | "3"[01]) sufijos de día? "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"
Notaciones regionales
Descripción Formato Ejemplos
Mes y día americanos mm "/" dd "5/12", "10/27"
Mes, día y año americanos mm "/" dd "/" y "12/22/78", "1/17/2006", "1/17/6"
Año de cuatro dígitos, mes y día con barras YY "/" mm "/" dd "2008/6/30", "1978/12/22"
Año de cuatro dígitos y mes (GNU) YY "-" mm "2008-6", "2008-06", "1978-12"
Año, mes y día con guiones y "-" mm "-" dd "2008-6-30", "78-12-22", "8-6-21"
Día, mes y año de cuatro dígitos, con puntos, tabulaciones o guiones dd [.\t-] mm [.-] YY "30-6-2008", "22.12\t1978"
Día, mes y año de dos dígitos, con puntos o tabulaciones dd [.\t] mm "." yy "30.6.08", "22\t12\t78"
Día, mes textual y año dd ([ \t.-])* m ([ \t.-])* y "30-June 2008", "22DEC78", "14 III 1879"
Mes textual y año de cuatro dígitos (el día se restablece a 1) m ([ \t.-])* YY "June 2008", "DEC1978", "March 1879"
Año de cuatro dígitos y mes textual (el día se restablece a 1) YY ([ \t.-])* m "2008 June", "1978-XII", "1879.MArCH"
Mes textual, día y año m ([ .\t-])* dd [,.stndrh\t ]+ y "July 1st, 2008", "April 17, 1790", "May.9,78"
Mes textual y día m ([ .\t-])* dd [,.stndrh\t ]* "July 1st,", "Apr 17", "May.9"
Día y mes textual d ([ .\t-])* m "1 July", "17 Apr", "9.May"
Abreviatura de mes, día y año M "-" DD "-" y "May-09-78", "Apr-17-1790"
Año, abreviatura de mes y día y "-" M "-" DD "78-Dec-22", "1814-MAY-17"
Año (y sólo el año) YY "1978", "2008"
Mes textual (y sólo el mes) m "March", "jun", "DEC"
Notaciones de la ISO 8601
Descripción Formato Ejemplos
Año, mes y día, de ocho dígitos YY MM DD "15810726", "19780417", "18140517"
Año de cuatro dígitos, mes y día con barras YY "/" MM "/" DD "2008/06/30", "1978/12/22"
Año de dos dígitos, mes y dís con guiones yy "-" MM "-" DD "08-06-30", "78-12-22"
Año de cuatro dígitos con signo opcional, mes y día [+-]? YY "-" MM "-" DD "-0002-07-26", "+1978-04-17", "1814-05-17"

Nota:

Para los formatos y e yy, los años por debajo de 100 son tratados de manera especial cuando se emplean los símbolos y o yy. Si el año cae en el rango de 0 (inclusive) a 69 (inclusive), se añade 2000. Si el año cae en el rango de 70 (inclusive) a 99 (inclusive) se añade 1900. Esto significa que "00-01-01" se interpreta como "2000-01-01".

Nota:

El formato "Día, mes y año de dos dígitos, con puntos o tabulaciones" (dd [.\t] mm "." yy) solamente funciona con valores de años de 61 (inclusive) a 99 (inclusive); fuera de esos años, el formato de hora "HH [.:] MM [.:] SS" tiene precedencia.

Nota:

El formato "Año (y sólo el año)" únicamente funciona si se ha encotrado una cadena de hora; de lo contrario, este formato es reconocido como HH MM.

Nota:

Es posible poner en exceso y en defecto los formatos dd y DD. Día 0 significa el último día del mes anterior, mientras que en exceso empieza a contar a partir del mes siguiente. Esto es, "2008-08-00" equivale a "2008-07-31", y "2008-06-31" equivale a "2008-07-01" (junio tiene sólo 30 días).

También es posible poner en defecto los formatos mm y MM con el valor 0. Un valor de mes de 0 significa diciemebre del año anterior. Por ejemplo, "2008-00-22" es equivalente a "2007-12-22".

Si se combinan los dos hechos anteriores y se ponen por defecto el día y el mes, sucede lo siguiente: "2008-00-00" primero se convierte a "2007-12-00" que después se convierte a "2007-11-30". Esto también sucede con la cadena "0000-00-00", que se transforma en "-0001-11-30" (el año -1 en el calendario ISO 8601, el cuál es 2 A.C. en el calendario gregoriano "proléptico").

add a note add a note

User Contributed Notes 3 notes

up
5
Mirek
3 months 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.
up
-1
Anonymous
1 day 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.
up
-65
fernandopsilveira at yahoo dot com dot br
10 months ago
If you use one of the "textual month + day" formats (like "July 1st" or "17 Apr"), current year is assumed.
To Top