Não é necessário converter para carimbo de data / hora para fazer a comparação, visto que as strings são validadas como datas no formato canônico 'AAAA-MM-DD'.
Este teste funcionará:
( ( $date_from_user >= $start_date ) && ( $date_from_user <= $end_date ) )
dado:
$start_date = '2009-06-17';
$end_date = '2009-09-05';
$date_from_user = '2009-08-28';
NOTA: Comparar strings como este permite datas "não válidas", por exemplo (32 de dezembro) '2009-13-32' e para strings com formatação estranha '2009/3/3', de modo que uma comparação de string NÃO será equivalente a uma comparação de data ou carimbo de data / hora. Isso funciona somente se os valores de data nas cordas estão em um CONSISTENTE e CANÔNICA formato.
EDIT para adicionar uma nota aqui, elaborando o óbvio.
Por CONSISTENTE , quero dizer, por exemplo, que as strings que estão sendo comparadas devem estar em formato idêntico: o mês deve sempre ter dois caracteres, o dia deve sempre ter dois caracteres e o caractere separador deve ser sempre um travessão. Não podemos comparar de forma confiável "strings" que não sejam ano de quatro caracteres, mês de dois caracteres, dia de dois caracteres. Se tivéssemos uma mistura de um caractere e dois meses de caractere nas strings, por exemplo, obteríamos resultados inesperados quando comparamos '2009-9-30'
com '2009-10-11'
. Humanamente vemos "9" como sendo menor que "10", mas uma comparação de strings verá '2009-9'
como maior que '2009-1'
. Não precisamos necessariamente ter caracteres separadores de traço; poderíamos comparar strings de forma confiável em'YYYYMMDD'
formato; se houver um caractere separador, ele deve estar sempre lá e ser sempre o mesmo.
Por CANONICAL , quero dizer um formato que resultará em strings que serão classificadas em ordem de data. Ou seja, a string terá uma representação de "ano" primeiro, depois "mês" e depois "dia". Não podemos comparar strings no 'MM-DD-YYYY'
formato de forma confiável , porque isso não é canônico. Uma comparação de string compararia o MM
(mês) antes de comparar YYYY
(ano), pois a comparação de string funciona da esquerda para a direita.) Um grande benefício do formato de string 'AAAA-MM-DD' é que ele é canônico; as datas representadas neste formato podem ser comparadas de forma confiável como strings.
[TERMO ADITIVO]
Se você for para a conversão de carimbo de data / hora php, esteja ciente das limitações.
Em algumas plataformas, o php não suporta valores de carimbo de data / hora anteriores a 1970-01-01 e / ou posteriores a 2038-01-19. (Essa é a natureza do inteiro de 32 bits do carimbo de data / hora unix.) As versões posteriores pf php (5.3?) Devem resolver isso.
O fuso horário também pode ser um problema, se você não tiver o cuidado de usar o mesmo fuso horário ao converter de string para timestamp e de timestamp de volta para string.
HTH