## Formatos relativos

Esta página describe los diferentes formatos relativos de fecha/hora que entiende 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"

> 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.

> 1. "`nombre del día`" no avanza a otro día. (Ejemplo: "Wed July 23rd, 2008" significa "2008-07-23").
> 2. "`número` `nombre del día`" no avanza a otro día. (Ejemplo: "1 wednesday july 23rd, 2008" significa "2008-07-23").
> 3. "`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").
> 4. "`ordinal` `nombre del día`" sí avanza a otro día. (Ejemplo "first wednesday july 23rd, 2008" significa "2008-07-30").
> 5. "`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").
> 6. "`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.

> 1. Establece el día del mes a 1.
> 2. "`ordinal` `nombre del día` 'of' " no avanza a otro día. (Ejemplo: "first tuesday of july 2008" significa "2008-07-01").
> 3. "`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).
> 4. "'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")
> 5. "'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.

### Historial de cambios

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".