Formatos de fecha y hora admitidos
Esta sección describe todos los formatos diferentes que entiende el analizador de
strtotime, de DateTime
y de date_create. Los formatos
están agrupados por secciones. En la mayoría de los casos, se pueden emplear los
formatos de secciones diferentes en la misma cadena de fecha/hora. Se proporcionan
ejemplos para cada uno de los formatos admitidos, así como
una descripción del formato. En los formatos, los caracteres entre comillas simples
son insensibles a mayúsculas-minúsculas, ('t' podría
ser t o T), y los caracteres entre
comillas dobles son sensibles a mayúsculas-minúsculas ("T" es solamente
T).
Formatos de Hora
Esta página describe los diferentes formatos de hora que entiede el analizador de
strtotime, DateTime y
date_create.
Símbolos empleados
Descripción
Formatos
Ejemplos
fracción
. [0-9]+
".21342", ".85"
hh
"0"?[1-9] | "1"[0-2]
"04", "7", "12"
HH
[01][0-9] | "2"[0-4]
"04", "7", "19"
meridiano
[AaPp] .? [Mm] .? [\0\t ]
"A.m.", "pM", "am."
MM
[0-5][0-9]
"00", "12", "59"
II
[0-5][0-9]
"00", "12", "59"
espacio
[ \t]
zona horaria (zh)
"("? [A-Za-z]{1,6} ")"? | [A-Z][a-z]+([_/][A-Z][a-z]+)+
"CEST", "Europe/Amsterdam", "America/Indiana/Knox"
corrección de la zh
"GMT"? [+-] hh ":"? MM?
"+0400", "GMT-07:00", "-07:00"
Notación de 12 Horas
Descripción
Formato
Ejemplos
Solamente hora, con meridiano
hh espacio? meridiano
"4 am", "5PM"
Horas y minutos, con meridiano
hh [.:] MM espacio? meridiano
"4:08 am", "7:19P.M."
Horas, minutos y segundos, con meridiano
hh [.:] MM [.:] II espacio? meridiano
"4:08:37 am", "7:19:19P.M."
MS SQL (Horas, minutos, segundos y fracción con meridiano), únicamente PHP 5.3 y posterior
hh ":" MM ":" II [.:] [0-9]+ meridiano
"4:08:39:12313am"
Notación de 24 Horas
Descripción
Formato
Ejemplos
Horas y minutos
't'? HH [.:] MM
"04:08", "19.19", "T23:43"
Horas y minutos, sin dos puntos
't'? HH MM
"0408", "t1919", "T2343"
Horas, minutos y segundos
't'? HH [.:] MM [.:] II
"04.08.37", "t19:19:19"
Horas, minutos y segundos, sin dos puntos
't'? HH MM II
"040837", "T191919"
Horas, minutos, segundos y zona horaria
't'? HH [.:] MM [.:] II espacio? ( corrección de la zh | zh )
"040837CEST", "T191919-0700"
Horas, minutos, segundos y fracción
't'? HH [.:] MM [.:] II fracción
"04.08.37.81412", "19:19:19.532453"
Información de la zona horaria
zh | corrección de la zh
"CEST", "Europe/Amsterdam", "+0430", "GMT-06:00"
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"
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".
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.
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.
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").
Formatos compuestos
Esta página describe los diferentes formatos compuestos de fecha/hora que entiede el analizador de
strtotime, DateTime y
date_create.
Símbolos empleados
Descripción
Formatos
Ejemplos
DD
"0" [0-9] | [1-2][0-9] | "3" [01]
"02", "12", "31"
día del año
"00"[1-9] | "0"[1-9][0-9] | [1-2][0-9][0-9] | "3"[0-5][0-9] | "36"[0-6]
"001", "012", "180", "350", "366"
fracción
. [0-9]+
".21342", ".85"
hh
"0"?[1-9] | "1"[0-2]
"04", "7", "12"
HH
[01][0-9] | "2"[0-4]
"04", "7", "19"
meridiano
[AaPp] .? [Mm] .? [\0\t ]
"A.m.", "pM", "am."
ii
[0-5][0-9]
"04", "8", "59"
II
[0-5][0-9]
"04", "08", "59"
M
'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' | 'sep' | 'sept' | 'oct' | 'nov' | 'dec'
MM
[0-5][0-9]
"00", "12"
espacio
[ \t]
ss
[0-5][0-9]
"04", "8", "59"
SS
[0-5][0-9]
"04", "08", "59"
W
"0"[1-9] | [1-4][0-9] | "5"[0-3]
"05", "17", "53"
corrección de la zh
"GMT"? [+-] hh ":"? II?
"+0400", "GMT-07:00", "-07:00"
YY
[0-9]{4}
"2000", "2008", "1978"
Notaciones regionales
Descripción
Formato
Ejemplos
Formato de registro común
dd "/" M "/" YY : HH ":" II ":" SS espacio corrección de la zh
"10/Oct/2000:13:55:36 -0700"
EXIF
YY ":" MM ":" DD " " HH ":" II ":" SS
"2008:08:07 18:11:31"
Año ISO con semana ISO
YY "-"? "W" W
"2008W27", "2008-W28"
Año ISO con semana y día ISO
YY "-"? "W" W "-"? [0-7]
"2008W273", "2008-W28-3"
MySQL
YY "-" MM "-" DD " " HH ":" II ":" SS
"2008-08-07 18:11:31"
PostgreSQL: Año con día del año
YY "."? día del año
"2008.197", "2008197"
SOAP
YY "-" MM "-" DD "T" HH ":" II ":" SS fracción corrección de la zh?
"2008-07-01T22:35:17.02", "2008-07-01T22:35:17.03+08:00"
Marca temporal de Unix
"@" "-"? [0-9]+
"@1215282385"
XMLRPC
YY MM DD "T" hh ":" II ":" SS
"20080701T22:38:07", "20080701T9:38:07"
XMLRPC (Compacto)
YY MM DD 't' hh II SS
"20080701t223807", "20080701T093807"
WDDX
YY "-" mm "-" dd "T" hh ":" ii ":" ss
"2008-7-1T9:3:37"
La "W" en los formatos "Año ISO con semana ISO" y "Año ISO con semana
y día ISO" es sensible a mayúsculas-minúsculas; sólo se puede usar la "W"
mayúscula.
La "T" en los formatos SOAP, XMRPC y WDDX es sensible a mayúsculas-minúsculas;
sólo se puede usar la "T" mayúscula.
El formato "Marca temporal de Unix" establece la zona horaria a UTC.
Formatos relativos
Esta página describe los diferentes formatos relativos de fecha/hora que entiede el analizador de
strtotime, DateTime y
date_create.
Símbolos empleados
Descripción
Formato
nombre del día
'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' |
'friday' | 'saturday' | 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' |
'sat'
texto de día
'weekday' | 'weekdays'
número
[+-]?[0-9]+
ordinal
'first' | 'second' | 'third' | 'fourth' | 'fifth' | 'sixth' |
'seventh' | 'eighth' | 'ninth' | 'tenth' | 'eleventh' | 'twelfth' |
'next' | 'last' | 'previous' | 'this'
texto relativo
'next' | 'last' | 'previous' | 'this'
espacio
[ \t]+
unidad
(('sec' | 'second' | 'min' | 'minute' | 'hour' | 'day' |
'fortnight' | 'forthnight' | 'month' | 'year') 's'?) | 'weeks' |
texto de día
Notaciones basadas en el día
Formato
Descripción
Ejemplos
'yesterday'
Medianoche de ayer
"yesterday 14:00"
'midnight'
La hora es establecida a 00:00:00
'today'
La hora es establecida a 00:00:00
'now'
Ahora - esto es simplemente ignorado
'noon'
La hora es establecida a 12:00:00
"yesterday noon"
'tomorrow'
Medianoche de mañana
'back of' hora
15 minutos después de la hora especificada
"back of 7pm", "back of 15"
'front of' hora
15 minutos antes de la hora especificada
"front of 5am", "front of 23"
'first day of'
Esteblece el día al primer día del mes en curso. Esta frase se
utiliza mejor seguida de un nombre de mes.
"first day of January 2008"
'last day of'
Esteblece el día al último día del mes en curso. Esta frase se
utiliza mejor seguida de un nombre de mes.
"last day of next month"
ordinal espacio nombre del día espacio 'of'
Calcula el x-ésimo día de la semana del mes en curso.
"first sat of July 2008"
'last' espacio nombre del día espacio 'of'
Calcula el último día de la semana del mes en curso.
"last sat of July 2008"
número espacio? (unidad | 'week')
Trata elementos de hora relativos donde el valor es un número.
"+5 weeks", "12 day", "-7 weekdays"
ordinal espacio unidad
Trata elementos de hora relativos donde el valor es texto.
"fifth day", "second month"
'ago'
Anula todos los valores de los elementos de hora relativos encontrados anteriormente.
"2 days ago", "8 days ago 14:00", "2 months 5 days ago", "2 months ago 5 days", "2 days ago"
nombre del día
Avanza al siguiente día con este nombre.
"Monday"
texto relativo espacio 'week'
Trata el formato especial "weekday + last/this/next week".
"Monday next week"
Las declaraciones relativas son siempre procesadas después
de las declaraciones no relativas. Esto es, "+1 week july 2008" y "july
2008 +1 week" son equivalentes.
Las excepciones a esta regla son: "yesterday", "midnight", "today", "noon"
y "tomorrow". Téngase en cuenta que "tomorrow 11:00" y "11:00 tomorrow"
son diferentes. Considerando la fecha de hoy como "July 23rd, 2008", el
primero produce "2008-07-24 11:00", mientras que el segundo
produce "2008-07-24 00:00". La razón de esto es que esas
cinco declaraciones influyen directamente en el instante actual.
Analice las siguiente observaciones cuando el día de la semana actual es el
mismo que el día de la semana usado en la cadena de fecha/hora. Sin embargo,
el día de la semana actual prodría haber sido (re)calculado mediante partes no relativas de
la cadena de fecha/hora.
"nombre del día" no avanza a
otro día. (Ejemplo: "Wed July 23rd, 2008" significa "2008-07-23").
"número nombre del día"
no avanza a otro día. (Ejemplo: "1
wednesday july 23rd, 2008" significa "2008-07-23").
"número week nombre del día" añadirá
primero el número de semanas, pero no
avanzará a otro día. En este caso "número
week" y "nombre del día" son dos bloques distintos.
(Ejemplo: "+1 week wednesday july 23rd, 2008" significa "2008-07-30").
"ordinal nombre del día"
sí avanza a otro día. (Ejemplo "first
wednesday july 23rd, 2008" significa "2008-07-30").
"número week ordinal
nombre del día" primero añadíra el número de
semanas, y después avanzará a otro
día. En este caso "número week" y
"ordinal nombre del día" son dos
bloques distintos. (Ejemplo: "+1 week first wednesday july 23rd,
2008" significa "2008-08-06").
"ordinal nombre del día 'of' "
no avanza a otro día. (Ejemplo:
"first wednesday of july 23rd, 2008" significa "2008-07-02" ya que
la frase específica con 'of' restablece el día del mes a '1', por lo que
el '23rd' aquí se ignora).
Observe también que el "of" en "ordinal
espacio nombre del día
espacio 'of' " y "'last' espacio
nombre del día espacio 'of' " hace
algo especial.
Establece el día del mes a 1.
"ordinal nombre del día 'of' "
no avanza a otro día. (Ejemplo: "first
tuesday of july 2008" significa "2008-07-01").
"ordinal nombre del día "
sí avanza otro día. (Ejemplo: "first
tuesday july 2008" significa "2008-07-08", véase también el punto 4 en la
lista de arriba).
"'last' nombre del día 'of' " toma el último
nombre del día del mes en curso. (Ejemplo: "last
wed of july 2008" significa "2008-07-30")
"'last' nombre del día" toma el último
nombre del día desde el día actual. (Ejemplo: "last
wed july 2008" significa "2008-06-25"; "july 2008" primero establece la
fecha actual a "2008-07-01" y después "last wed" retrocede al
miércoles anterior, que es "2008-06-25").
Los valores relativos al mes se calculan basándose en la longitud de los meses por
los que pasan. Un ejemplo sería "+2 month 2011-11-30", el cual
produciría "2012-01-30". Esto es debido a que noviembre tiene 30 días de longitud, y
diciembre tiene 31 días de longitud, produciendo un total de 61 días.
&reftitle.changelog;
&Version;
&Description;
5.3.3
"first day" y "last day" se cambiaron para que se comporten como "+1 day" y "-1 day",
respectivamente. Anteriormente, el comportamiento era "first day of" y "last day of".