Datum vergleichen
PeTahGeh
- php
0 wahsaga0 Der Martin
Hallo und moinsen,
ich steck gerade in einem Problem, dass ich aus einer Kraft so nicht gelöst bekomme:
Ich bekomme aus einer csv-Datei ein Datum (z.b. 27.4.07 00:00:00) als String und versuche nun das aktuelle Datum damit zu vergleichen. Wenn die Kondition grösser als 7 Tage wahr ist, soll etwas passieren.
Nun denn, anbei zwei Lösungsansätze, die allerdings ins Nirvana laufen:
$delivery_date = trim($items[22]);
$delivery_date = substr($delivery_date,0,-9);
$delivery_date = explode(".",$delivery_date);
$current_date = date("Ymd");
$lief_datum = (int)$delivery_date[0] + ((int)$delivery_date[1] * 100) + (((int)$delivery_date[2]+2000) * 10000)." . ";
$differenz = ((int)$lief_datum - (int)$current_date)/30;
Der Versuch das geholte Datum in einem String zu konkatinieren und daraus dann wieder in eine Zahl umzuwandeln ist völliger Mist, weiss ich jetzt auch :)
$jahr=date("Y"); $monat=date("m"); $tag=date("d");
$datum=mktime(0, 0, 0, $tag, $monat, $jahr);
$termin=explode(".", $delivery_date);
$termin=mktime(0, 0, 0, $termin[2], $termin[1], $termin[0]);
$differenz = ((($termin - $datum)/60)/60)/12;
Der Versuch das Datum in einen Unix-Timestamp zu wandeln und daraus irgendwie die Differenz zu errechnen geht auch nicht, weil mir der Timestamp irgendwie suspekt ist.
All das geht nicht. Ich hab keine Idee mehr :( Wer kann helfen, wer hat brauchbare Lösungsansätze dafür?
Vielen Dank schonmal im Voraus, Peter
hi,
Der Versuch das Datum in einen Unix-Timestamp zu wandeln und daraus irgendwie die Differenz zu errechnen geht auch nicht, weil mir der Timestamp irgendwie suspekt ist.
Und das bedeutet?
gruß,
wahsaga
hi,
Der Versuch das Datum in einen Unix-Timestamp zu wandeln und daraus irgendwie die Differenz zu errechnen geht auch nicht, weil mir der Timestamp irgendwie suspekt ist.
Und das bedeutet?
Es bedeutet, dass ich zwei Werte rausbekomme, die ich nicht deuten kann. Denn:
"mktime: Gibt den Unix Timestamp/Zeitstempel an Hand der gegebenen Argumente zurück. Der Zeitstempel ist ein long-integer-Wert, der die Anzahl der Sekunden zwischen der UNIX Epoche (January 1 1970 00:00:00 GMT) und der angegebenen Zeit enthält."
$datum: 1175724000 (aktuelles Datum)
$termin: 1720303200 (der 24.7.07)
Die Differenz ist 544579200. Das sind doch nie und nimmer die Sekunden, die zwischen heute und dem in der Zukunft liegenden Datum liegen. oder?
gruss, peter
hi,
$datum: 1175724000 (aktuelles Datum)
$termin: 1720303200 (der 24.7.07)Die Differenz ist 544579200. Das sind doch nie und nimmer die Sekunden, die zwischen heute und dem in der Zukunft liegenden Datum liegen. oder?
Doch. Nur liegt dein "Datum in der Zukunft" in etwas weiterer Zukunft, als du annimst ...
gruß,
wahsaga
Hallo,
Ich bekomme aus einer csv-Datei ein Datum (z.b. 27.4.07 00:00:00) als String
$delivery_date = trim($items[22]);
$delivery_date = substr($delivery_date,0,-9);
$delivery_date = explode(".",$delivery_date);
$current_date = date("Ymd");$lief_datum = (int)$delivery_date[0] + ((int)$delivery_date[1] * 100) + (((int)$delivery_date[2]+2000) * 10000)." . ";
$differenz = ((int)$lief_datum - (int)$current_date)/30;
du hast da eine interessante Zeitrechnung, die mir etwas fremd ist. Du scheinst anzunehmen, dass ein Monat 100 Tage und ein Jahr 100 Monate hat. Basierend auf dieser Annahme berechnest du dann einen Zeitabstand in Tagen, den du dann durch 30 dividierst. Was zum Geier ging dir bei dieser Rechnung durch den Kopf?
> Der Versuch das geholte Datum in einem String zu konkatinieren und daraus dann wieder in eine Zahl umzuwandeln ist völliger Mist, weiss ich jetzt auch :)
Ach. ;-)
> ~~~php
$jahr=date("Y"); $monat=date("m"); $tag=date("d");
> $datum=mktime(0, 0, 0, $tag, $monat, $jahr);
> $termin=explode(".", $delivery_date);
> $termin=mktime(0, 0, 0, $termin[2], $termin[1], $termin[0]);
> $differenz = ((($termin - $datum)/60)/60)/12;
Dieser Ansatz erscheint mir logischer. Aber auch hier steckt noch der Teufel im Detail. Was bekommst du, wenn du Sekunden durch 60*60*12 dividierst? Richtig, halbe Tage. Wie kommst du auf die 12 als Divisor? Bei uns heißt es immer, der Tag hat 24 Stunden (und wenn das nicht reicht, nehmen wir die Nacht dazu *g*).
Der Versuch das Datum in einen Unix-Timestamp zu wandeln und daraus irgendwie die Differenz zu errechnen geht auch nicht, weil mir der Timestamp irgendwie suspekt ist.
Hä? Dann solltest du ihn mal zum Verhör vorladen.
So long,
Martin