No es necesario convertir a marca de tiempo para realizar la comparación, dado que las cadenas se validan como fechas en formato canónico 'AAAA-MM-DD'.
Esta prueba 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: La comparación de cadenas como esta permite fechas "no válidas", por ejemplo, (32 de diciembre) '2009-13-32' y cadenas con formato extraño '2009/3/3', de modo que una comparación de cadenas NO será equivalente a una comparación de fecha o marca de tiempo. Esto funciona SOLO si los valores de fecha en las cadenas están en formato CONSISTENTE y CANÓNICO .
EDITAR para agregar una nota aquí, elaborando lo obvio.
Por CONSISTENTE , quiero decir, por ejemplo, que las cadenas que se comparan deben tener un formato idéntico: el mes debe tener siempre dos caracteres, el día siempre debe tener dos caracteres y el carácter separador debe ser siempre un guión. No podemos comparar de forma fiable "cadenas" que no sean un año de cuatro caracteres, un mes de dos caracteres ni un día de dos caracteres. Si tuviéramos una mezcla de un carácter y dos meses de caracteres en las cadenas, por ejemplo, obtendríamos un resultado inesperado cuando comparamos '2009-9-30'
con '2009-10-11'
. Humanamente vemos "9" como menor que "10", pero una comparación de cadenas verá '2009-9'
como mayor que '2009-1'
. No es necesario que tengamos caracteres separadores de guiones; podríamos comparar cadenas de forma fiable en'YYYYMMDD'
formato; si hay un carácter separador, debe estar siempre ahí y ser siempre el mismo.
Por CANÓNICO , me refiero a un formato que dará como resultado cadenas que se ordenarán por fecha. Es decir, la cadena tendrá una representación de "año" primero, luego "mes", luego "día". No podemos comparar cadenas en 'MM-DD-YYYY'
formato de manera confiable , porque eso no es canónico. Una comparación de cadenas compararía el MM
(mes) antes de compararlo YYYY
(año), ya que la comparación de cadenas funciona de izquierda a derecha.) Un gran beneficio del formato de cadena 'AAAA-MM-DD' es que es canónico; las fechas representadas en este formato se pueden comparar de forma fiable como cadenas.
[APÉNDICE]
Si opta por la conversión de marca de tiempo php, tenga en cuenta las limitaciones.
En algunas plataformas, php no admite valores de marca de tiempo anteriores a 1970-01-01 y / o posteriores a 2038-01-19. (Esa es la naturaleza del entero de 32 bits de marca de tiempo de Unix.) Se supone que las versiones posteriores pf php (¿5.3?) Abordan eso.
La zona horaria también puede ser un problema, si no tiene cuidado de usar la misma zona horaria al convertir de cadena a marca de tiempo y de marca de tiempo a cadena.
HTH