Es ist nicht erforderlich, für den Vergleich in einen Zeitstempel zu konvertieren, da die Zeichenfolgen als Daten im kanonischen Format 'JJJJ-MM-TT' validiert werden.
Dieser Test wird funktionieren:
( ( $date_from_user >= $start_date ) && ( $date_from_user <= $end_date ) )
gegeben:
$start_date = '2009-06-17';
$end_date = '2009-09-05';
$date_from_user = '2009-08-28';
HINWEIS: Der Vergleich solcher Zeichenfolgen ermöglicht "ungültige" Daten, z. B. (32. Dezember) '2009-13-32', und seltsam formatierte Zeichenfolgen '2009/3/3', sodass ein Zeichenfolgenvergleich NICHT gleichwertig ist ein Datums- oder Zeitstempelvergleich. Dies funktioniert NUR, wenn die Datumswerte in den Zeichenfolgen in einem konsistenten und kanonischen Format vorliegen.
BEARBEITEN Sie , um hier eine Notiz hinzuzufügen und das Offensichtliche zu erläutern.
Mit KONSISTENT meine ich zum Beispiel, dass die verglichenen Zeichenfolgen das gleiche Format haben müssen: Der Monat muss immer aus zwei Zeichen bestehen, der Tag muss immer aus zwei Zeichen bestehen und das Trennzeichen muss immer ein Bindestrich sein. Wir können "Zeichenfolgen", die nicht aus vier Zeichenjahr, zwei Zeichenmonaten und zwei Zeichen bestehen, nicht zuverlässig vergleichen. Wenn wir zum Beispiel eine Mischung aus einem Zeichen und zwei Zeichenmonaten in den Zeichenfolgen hätten, würden wir im Vergleich '2009-9-30'
zu ein unerwartetes Ergebnis erzielen '2009-10-11'
. Wir sehen menschlich "9" als kleiner als "10", aber ein Zeichenfolgenvergleich wird '2009-9'
als größer als " '2009-1'
. Wir brauchen nicht unbedingt ein Bindestrich-Trennzeichen. Wir könnten genauso gut Strings in vergleichen'YYYYMMDD'
Format; Wenn es ein Trennzeichen gibt, muss es immer da und immer gleich sein.
Mit CANONICAL meine ich ein Format, das zu Zeichenfolgen führt, die in Datumsreihenfolge sortiert werden. Das heißt, die Zeichenfolge wird zuerst "Jahr", dann "Monat" und dann "Tag" darstellen. Wir können Zeichenfolgen im 'MM-DD-YYYY'
Format nicht zuverlässig vergleichen , da dies nicht kanonisch ist. Ein Zeichenfolgenvergleich würde den MM
(Monat) vor dem Vergleich YYYY
(Jahr) vergleichen, da der Zeichenfolgenvergleich von links nach rechts funktioniert.) Ein großer Vorteil des Zeichenfolgenformats 'JJJJ-MM-TT' besteht darin, dass es kanonisch ist. In diesem Format dargestellte Daten können zuverlässig als Zeichenfolgen verglichen werden.
[NACHTRAG]
Wenn Sie sich für die PHP-Zeitstempelkonvertierung entscheiden, beachten Sie die Einschränkungen.
Auf einigen Plattformen unterstützt PHP keine Zeitstempelwerte früher als 1970-01-01 und / oder später als 2038-01-19. (Das ist die Natur der 32-Bit-Ganzzahl des Unix-Zeitstempels.) Spätere Versionen von PHP (5.3?) Soll dies beheben.
Die Zeitzone kann auch ein Problem sein, wenn Sie beim Konvertieren von Zeichenfolge zu Zeitstempel und von Zeitstempel zurück zu Zeichenfolge nicht darauf achten, dieselbe Zeitzone zu verwenden.
HTH