Non è necessario convertire in timestamp per fare il confronto, dato che le stringhe sono convalidate come date nel formato canonico "AAAA-MM-GG".
Questo test funzionerà:
( ( $date_from_user >= $start_date ) && ( $date_from_user <= $end_date ) )
dato:
$start_date = '2009-06-17';
$end_date = '2009-09-05';
$date_from_user = '2009-08-28';
NOTA: il confronto di stringhe come questo consente date "non valide" ad es. (32 dicembre) '2009-13-32' e stringhe stranamente formattate '2009/3/3', in modo tale che un confronto di stringhe NON sarà equivalente a una data o un confronto timestamp. Funziona SOLO se i valori di data nelle stringhe sono in un formato COSTANTE e CANONICO .
MODIFICA per aggiungere una nota qui, elaborando l'ovvio.
Per COERENTE intendo ad esempio che le stringhe da confrontare devono essere in formato identico: il mese deve essere sempre di due caratteri, il giorno deve essere sempre di due caratteri e il carattere separatore deve essere sempre un trattino. Non possiamo confrontare in modo affidabile "stringhe" che non sono quattro caratteri anno, due caratteri mese, due caratteri giorno. Se avessimo un mix di un carattere e due mesi di carattere nelle stringhe, ad esempio, otterremmo risultati inaspettati rispetto '2009-9-30'
a '2009-10-11'
. Umanamente vediamo "9" come minore di "10", ma un confronto tra stringhe vedrà '2009-9'
come maggiore di '2009-1'
. Non abbiamo necessariamente bisogno di avere un carattere separatore di trattini; potremmo confrontare in modo altrettanto affidabile le stringhe in'YYYYMMDD'
formato; se c'è un carattere separatore, deve essere sempre lì ed essere sempre lo stesso.
Per CANONICO , intendo un formato che si tradurrà in stringhe che verranno ordinate in ordine di data. Cioè, la stringa avrà prima una rappresentazione di "anno", poi "mese", quindi "giorno". Non possiamo confrontare in modo affidabile le stringhe nel 'MM-DD-YYYY'
formato, perché non è canonico. Un confronto di stringhe confronta il MM
(mese) prima di confrontare YYYY
(anno) poiché il confronto di stringhe funziona da sinistra a destra.) Un grande vantaggio del formato di stringa "AAAA-MM-GG" è che è canonico; le date rappresentate in questo formato possono essere confrontate in modo affidabile come stringhe.
[ADDENDUM]
Se scegli la conversione del timestamp php, sii consapevole dei limiti.
Su alcune piattaforme, php non supporta i valori di timestamp precedenti a 1970-01-01 e / o successivi a 2038-01-19. (Questa è la natura dell'intero unix timestamp a 32 bit.) Le versioni successive pf php (5.3?) Dovrebbero affrontare questo problema.
Anche il fuso orario può essere un problema, se non stai attento a utilizzare lo stesso fuso orario durante la conversione da stringa a timestamp e da timestamp a stringa.
HTH