Formatos de Data e Hora Suportados
PHP Manual

Formatos relativos

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

Símbolos Utilizados
Descrição Formato
dayname 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat'
daytext 'weekday' | 'weekdays'
number [+-]?[0-9]+
ordinal 'first' | 'second' | 'third' | 'fourth' | 'fifth' | 'sixth' | 'seventh' | 'eighth' | 'ninth' | 'tenth' | 'eleventh' | 'twelfth' | 'next' | 'last' | 'previous' | 'this'
reltext 'next' | 'last' | 'previous' | 'this'
space [ \t]+
unit (('sec' | 'second' | 'min' | 'minute' | 'hour' | 'day' | 'fortnight' | 'forthnight' | 'month' | 'year') 's'?) | 'weeks' | daytext
Notação baseada no dia
Formato Descrição Examplos
'yesterday' Meia-noite de ontem "yesterday 14:00"
'midnight' A hora é configurada para 00:00:00  
'today' A hora é configurada para 00:00:00  
'now' Agora - isto é simplesmente ignorado  
'noon' A hora é configurada para 12:00:00 "yesterday noon"
'tomorrow' Meia-noite de amanhã  
'back of' hour 15 minutos após a hora informada "back of 7pm", "back of 15"
'front of' hour 15 minutos antes da hora informada "front of 5am", "front of 23"
'first day of' Define o dia para o primeiro dia do mês atual. Essa frase é usada de melhor forma, junto com um nome de mês. "first day of January 2008"
'last day of' Define o dia para o último do mês corrente. Essa frase é usada de melhor forma, junto com um nome de mês. "last day of next month"
ordinal space dayname space 'of' Calcula o número ordinal x-th da semana do mês corrente. "first sat of July 2008"
'last' space dayname space 'of' Calcular o último dia da semana do mês corrente. "last sat of July 2008"
number space? (unit | 'week') Manipula porções de tempo relativas onde o valor seja um número. "+5 weeks", "12 day", "-7 weekdays"
ordinal space unit Manipula porções de tempo relativas onde o valor seja um texto. "fifth day", "second month"
'ago' Nega todos os valores das porções de tempo relativas anteriores. "2 days ago", "8 days ago 14:00", "2 months 5 days ago", "2 months ago 5 days", "2 days ago"
dayname Move para o próximo dia deste nome. "Monday"
reltext space 'week' Manipula o formato especial "weekday + last/this/next week". "Monday next week"

Nota:

Declarações relativas são sempre processadas depois de declarações não relativas. Isso faz com que "+1 week july 2008" e "july 2008 +1 week" sejam equivalentes.

As exceções desta regra são "yesterday", "midnight", "today", "noon" e "tomorrow". Observe que "tomorrow 11:00" e "11:00 tomorrow" são diferentes. Considerando que a data hoje como "July 23rd, 2008", o primeiro produzirá "2008-07-24 11:00" assim como o segundo produzirá "2008-07-24 00:00". Isso acontece por que as cinco declarações influenciam diretamente o tempo corrente.

Nota:

Observe as seguintes considerações quando o dia da semana corrente é o mesmo que o dia da semana utilizada na string date/hora. O dia da semana corrente pode ser (re-)calculado para porções não relativas de strings de data/hora.

  1. "dayname" não avança para outro dia. (Examplo: "Wed July 23rd, 2008" referencia "2008-07-23").
  2. "number dayname" não avança para outro dia. (Exemplo: "1 wednesday july 23rd, 2008" referencia "2008-07-23").
  3. "number week dayname" adicionará primeiro o dia da semana, mas not avançará para outro dia. Neste caso, "number week" e "dayname" são dois blocos distintos. (Exemplo: "+1 week wednesday july 23rd, 2008" referencia "2008-07-30").
  4. "ordinal dayname" avançarápara outro dia. (Exemplo "first wednesday july 23rd, 2008" referencia "2008-07-30").
  5. "number week ordinal dayname" adicionará primeiro o número de semanas, e então avançará para outro dia. Neste caso "number week" e "ordinal dayname são dois blocos distintos. (Exemplo: "+1 week first wednesday july 23rd, 2008" referencia "2008-08-06").
  6. "ordinal dayname 'of' " não avança para outro dia. (Exemplo: "first wednesday of july 23rd, 2008" referencia "2008-07-02" porque a frase específica com 'of' redefine o dia do mês para '1' e o '23rd' é ignorado).

Também observe que o "of" em "ordinal space dayname space 'of' " e "'last' space dayname space 'of' " fazem coisas especiais.

  1. Ele definirá o dia do mês para 1.
  2. "ordinal dayname 'of' " não avançará para outro dia. (Exemplo: "first tuesday of july 2008" referencia "2008-07-01").
  3. "ordinal dayname " avançará para outro dia. (Exemplo: "first tuesday july 2008" referencia "2008-07-08", veja também o item 4 na lista acima).
  4. "'last' dayname 'of' " captura o último dayname do mês corrente. (Exemplo: "last wed of july 2008" referencia "2008-07-30")
  5. "'last' dayname" captura o último dayname do mês corrente. (Exemplo: "last wed july 2008" referencia "2008-06-25"; "july 2008" primeiro definirá a data corrente para "2008-07-01" e então "last wed" moverá para a última Quarta-feira que será "2008-06-25").

Nota:

Meses com valores relativos são calculados baseados no tamanho do mês passado. Um exemplo seria "+2 month 2011-11-30",que produziria "2012-01-30". Isso é devido a Novembro tendo 30 dias como tamanho, e Dezembro tendo 31, produzindo um total de 61 dias.

Changelog

Versão Descrição
5.3.3 "first day" e "last day" foi modificado para ter o comportamento de "+1 day" e "-1 day", respectivamente. Anteriormente, o comportamento era como "first day of" e "last day of".


Formatos de Data e Hora Suportados
PHP Manual