timestamp nur datum vergleichen

  • Themenstarter Themenstarter starfoxfs
  • Beginndatum Beginndatum
S

starfoxfs

Hallo zusammen,

Ich hab momentan ein kleines Problem.

Ich möchte 2 Unix Timestamps vergleichen möchte aber von diesen Timestamps NUR das Datum vergleichen nicht die Uhrzeit.

Wie stell ich das an ?

Ein Datum ist als Timestamp in der Datenbank gespeichert und den anderen möchte ich als jetziges (aktuelles) Datum generieren und diese dann vergleichen sodas ich bei der Ausgabe stehen habe "Heute" für den Heutigen Tag , "Gestern oder älteres Datum" für vergangene Daten , "zukünftiges Datum" als Datumausgabe z.b. 29.09.2007.
 
die DATE() Funktion hilft dir weiter

PHP:
$timestamp1 = 2382323;
$timestamp2 = 23123123;

if(date('Ymd', $timestamp1) == date('Ymd', $timestamp2){
echo "datum gleich!";
}

größer, kleiner und andere vergleiche Funktionieren auch. Alternativ kannst du das ganze schon in der MySQL datenbank machen lassen:

Code:
SELECT DATEDIFF( NOW( ) , FROM_UNIXTIME(`Datumsfeld`) ) FROM `table`

zurück bekommst du dann 0, 1,2,3, -1, -2 usw Das lässt sich dann per funktion einfach auf die zugehörigen Namen visualisieren.
 
Das ganze hab ich schon probiert nur irgendwie funktioniert dann die Ausgabe für Daten in der Zukunft nicht richtig, allerdings kann es evtl an den . zwischen dmY liegen ?

PHP:
$heute = time();
$heutigertag = date("d.m.Y", $heute);
$datumdb = date("d.m.Y", $db["datum"]);

if  ($heutigertag == $datumdb) {

echo "Heute ist Heute";

  }

if ($heutigertag > $datumdb) {

echo "Zukunft";

}

if ($heutigertag < $datumdb) {

echo "gestern";

}
 
Zuletzt bearbeitet von einem Moderator:
hmm überschneidet sich das nicht :confused: wenn das datum in der datenbank größer und kleiner sein kann als der Heutige Tag dann überschneiden sich doch die beiden if abfragen :confused:

Wenn ich den PHPcode wie ich ihn oben gepostet habe nehme dann hab ich ganz einfach das Problem das mir alles richtig angezeigt wird nur wenn ich für Heute den 23.08.2007 habe und das Datum in der Datenbank vom nächsten Monat also vom 03.09.2007 ist wird mir dieses als altes Datum angezeigt anstatt als zukünftiges der Rest passt. Auch z.b. der 27.08.2007 wird als zukünftiges Datum angezeigt nur eben der nächste Monat wieder als vergangenes obwohl das nicht stimmt
 
Zuletzt bearbeitet von einem Moderator:
Verwende die MySQL Version die ich gepostet hatte. Wenn du solche genaueren bestimmungen machen willst und nicht nur heute / Zukunft / Vergangenheit.
Code:
SELECT DATEDIFF(
NOW( ) , FROM_UNIXTIME( `time` ) as alter
)
FROM `log`

Ergebnisse:
0 = heute
-1 = morgen
-7 = nächste woche
1 = gestern
2 = vorgestern
7 = letzte woche


EDIT: nachdem Post von MAu nochmal draufgeschaut... d.m.y kannst du dafür nicht verwenden, dmy auch nicht. WENN dann Ymd damit ein Größer oder kleiner vergleich möglich ist.
 
Zuletzt bearbeitet:
Das ganze hab ich schon probiert nur irgendwie funktioniert dann die Ausgabe für Daten in der Zukunft nicht richtig, allerdings kann es evtl an den . zwischen dmY liegen ?

PHP:
$heute = time();
$heutigertag = date("d.m.Y", $heute);
$datumdb = date("d.m.Y", $db["datum"]);

if  ($heutigertag == $datumdb) {

echo "Heute ist Heute";

  }

if ($heutigertag > $datumdb) {

echo "Zukunft";

}

if ($heutigertag < $datumdb) {

echo "gestern";

}
Bei Strings funktioniert größer/kleiner Vergleich logischerweise nicht. Woher soll denn PHP wissen, ob der String 13.03.2007 (man beachte die Punkte) größer ist als 13.03.2006? Lässt du die Punkte bei der [phpf]date[/phpf] Funktion weg (so wie es dir engelb schon vorgeschlagen hat), dann wird es funktionieren.
 
Zurück