Zeitproblem bei einer Abfrage

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Zeitproblem bei einer Abfrage

    Hallo zusammen,

    ich habe Termine in einer Datenbank stehen. Nun wird die "Uhrzeit" immer als time dort manuell für den Termin gespeichert. Liegt also im Format 00:00:01 vor. Die Termine werden auch alle passend ausgegeben, aber ich möchte folgendes umsetzen:

    Ist der eingetragene Termin weniger als 30min vom jetzigen entfernt: Zeige icon gelb an
    Ist der eingetragene Termin weniger als 10min vom jetzigen entfernt: Zeige icon rot an
    Sonst: grün

    Würde das gerne mit einer einfachen if Abfrage in PHP abfragen, bekomme das mit den Minuten abziehen aber nicht hin :( Wie frage ich das genau ab? Zeit aus Datenbank wird per $row[uhrzeit] ausgegeben!

    Danke für jede Antwort!
  • Hi,
    bitte etwas konkreter. Benutzt du wirklich TIME als Datentyp - also hast das Datum in einer anderen Spalte? Damit dein Code auch bei einem Tageswechsel funktioniert, solltest du auf jeden das Datum hineinrechnen.

    Wandle deine Daten in einen UNIX Timestamp um
    $timestamp = strtotime('Y-m-d H:i:s'); // aus uhrzeit generieren

    und dann kannst du mit time() - $timestamp die übrig gebliebene Zeit herausfinden und dein Icon gelb färben.
    Lg
  • Torben Brodt schrieb:

    und dann kannst du mit time() - $timestamp die übrig gebliebene Zeit herausfinden und dein Icon gelb färben.
    Lg

    Dankeschön für die Antwort! Klingt logisch, aber irgendwie klappt das bei mir nicht :( So sieht mein Code nun aus:

    Quellcode

    1. $zeitausdatenbank=$row[uhrzeit];
    2. $timestamp = strtotime($zeitausdatenbank);
    3. $zeitminusstamp=time()-$timestamp;
    4. echo 'Aktuelle Zeit ';
    5. echo date('H:i:s', time());
    6. echo '<br/>Zeit aus Datenbank ';
    7. echo date('H:i:s', $timestamp);
    8. echo '<br/>Ausgabe Zeit ';
    9. echo date('H:i:s', $zeitminusstamp);
    Alles anzeigen


    So sieht dann die Ausgabe aus:
    Aktuelle Zeit 13:55:23
    Zeit aus Datenbank 14:00:00
    Ausgabe Zeit 00:55:23


    Ich hätte da nun irgendwie 00:04:37 oder so erwartet....
    Steht in der Datenbank anstatt 14Uhr einfach 15Uhr kommt folgendes:
    Aktuelle Zeit 13:55:23
    Zeit aus Datenbank 15:00:00
    Ausgabe Zeit 23:55:23


    Was mach ich falsch?
  • Die Differenz ist eigentlich kein gültiger Zeitstempel, nur über einen Trick (das Setzen der Zeit auf GMT), kannst du es zum Umrechnen zwischen Sekunden, Minuten und Stunden benutzen.

    Aber auch dann darf dein Zeitstempel in keinem Fall negativ sein.

    Hier die Lösung mit einigen Tricks ;)

    Quellcode

    1. $zeitausdatenbank= '2011-05-25 20:00';
    2. $timestamp = strtotime($zeitausdatenbank);
    3. $zeitminusstamp = time() - $timestamp;
    4. echo 'Aktuelle Zeit ';
    5. echo date('H:i:s', time());
    6. echo '<br/>Zeit aus Datenbank ';
    7. echo date('H:i:s', $timestamp);
    8. $timezone = date_default_timezone_get('GMT');
    9. date_default_timezone_set('GMT');
    10. echo '<br/>Ausgabe Zeit ';
    11. echo ($zeitminusstamp < 0 ? '-' : '') . date('H:i:s', abs($zeitminusstamp));
    12. date_default_timezone_set($timezone);
    Alles anzeigen