Pergunta

Suponha que você tenha um sistema de mensagens construído em PHP com um back-end de banco de dados MySQL e gostaria de oferecer suporte à pesquisa de mensagens usando strings de data arbitrárias.

O banco de dados inclui uma tabela de mensagens, com um campo 'date_created' representado como data e hora.

Exemplos de sequências de datas arbitrárias que seriam aceitas pelo usuário devem espelhar aquelas aceitas por strtotime.

Para os exemplos a seguir, pesquisas realizadas em 21 de março de 2010:

"26 de janeiro de 2009" retornaria todas as mensagens entre 26/01/2009 00:00:00 e 27/01/2009 00:00:00
"8 de março" retornaria todas as mensagens entre 08/03/2010 00:00:00 e 26/01/2010 00:00:00
"Semana passada" retornaria todas as mensagens entre 14/03/2010 00:00:00 e 21/03/2010 018:25:00
"2008" retornaria todas as mensagens entre 01/01/2008 00:00:00 e 31/12/2008 00:00:00

Comecei a trabalhar com date_parse, mas o número de variáveis ​​cresceu rapidamente.Eu me pergunto se estou reinventando a roda.

Alguém tem uma sugestão que funcione como uma solução geral ou que capture a maioria das strings de entrada possíveis?

Foi útil?

Solução

Tentar strtotime É MUITO bom em adivinhar datas corretamente.

  • "Semana passada"
  • "Semana que vem"
  • "+15 dias"
  • "Terça-feira passada"
  • "31 de outubro"
  • etc.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top