Esta página descreve os diferentes formatos de data e tempo relativos que os interpretadores strtotime(), DateTime e date_create() entendem.
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 |
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.
- "dayname" não avança para outro dia. (Examplo: "Wed July 23rd, 2008" referencia "2008-07-23").
- "number dayname" não avança para outro dia. (Exemplo: "1 wednesday july 23rd, 2008" referencia "2008-07-23").
- "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").
- "ordinal dayname" avançarápara outro dia. (Exemplo "first wednesday july 23rd, 2008" referencia "2008-07-30").
- "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").
- "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.
- Ele definirá o dia do mês para 1.
- "ordinal dayname 'of' " não avançará para outro dia. (Exemplo: "first tuesday of july 2008" referencia "2008-07-01").
- "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).
- "'last' dayname 'of' " captura o último dayname do mês corrente. (Exemplo: "last wed of july 2008" referencia "2008-07-30")
- "'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.
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". |