Esta página describe los diferentes formatos relativos de fecha/hora que entiende el analizador de strtotime(), DateTime y date_create().
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 |
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" |
Nota:
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.
Nota:
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").
Nota:
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.
Versión | Descripción |
---|---|
5.6.23, 7.0.8 | Las semanas siempre empiezan en lunes. Antes, el domingo también se consideraba como inicio de semana. |
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". |