Ankündigung

Einklappen
Keine Ankündigung bisher.

Vergleich, ob ein Datum mit Uhrzeit vor anderem liegt

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Vergleich, ob ein Datum mit Uhrzeit vor anderem liegt

    Hallo,

    ich habe bisher immer nur schauen müssen, ob ein Datum vor oder nach einem anderen Datum liegt. Das habe ich so gemacht (ist vielleicht nicht das einfachste, aber es klappt):

    //Überprüfung, ob die gewählten Tage im gültigen Zeitraum liegen
    for ($n=1;$n<$wieviele;$n++) {
    $monat="TV".$n."_monat";
    $tag="TV".$n."_tag";
    $jahr="TV".$n."_jahr";
    $TV_vgl="TV".$n;
    //Umwandlung in ein Format zum Vergleichen
    $$TV_vgl = date("Ymd", mktime(0,0,0,$$monat,$$tag,$$jahr));
    $ETV_vgl = date("Ymd", mktime(0,0,0,$ETV_m,$ETV_d,$ETV_y));
    $LTV_vgl = date("Ymd", mktime(0,0,0,$LTV_m,$LTV_d,$LTV_y));
    if (($$TV_vgl < $ETV_vgl) || ($$TV_vgl > $LTV_vgl)) {
    echo "" . "Das Datum für die " . $n . ". Teilversammlung liegt nicht im erlaubten Zeitraum - neues Datum eingeben!" . "";
    exit();
    }
    }

    Die entscheidende Zeile für mich ist diese:
    $$TV_vgl = date("Ymd", mktime(0,0,0,$$monat,$$tag,$$jahr));

    Jetzt kommt aber das Problem dazu, dass ein Termin auch am gleichen Tag zu verschiedenen Uhrzeiten stattfinden kann, so dass ich für den Vergleich auch noch die Uhrzeit berücksichtigen muss. Angefangen habe ich folgendes:

    //Überprüfung, ob die einzelnen Datums und Zeiten hintereinander liegen
    for ($n=1;$n<$wieviele-1;$n++) {
    $stunde_v="TV".$n."_stunde";
    $minute_v="TV".$n."_minute";
    $monat_v="TV".$n."_monat";
    $tag_v="TV".$n."_tag";
    $jahr_v="TV".$n."_jahr";
    $TV_vgl_v="TV".$n;
    $stunde_n="TV".$n+1."_stunde";
    $minute_n="TV".$n+1."_minute";
    $monat_n="TV".$n+1."_monat";
    $tag_n="TV".$n+1."_tag";
    $jahr_n="TV".$n+1."_jahr";
    $TV_vgl_n="TV".$n+1;

    Als nächstes kommt nun die Umwandlung in ein Format zum Vergleichen, aber zusätzlich auch, ob die Zeit des Datums vor der Zeit des anderen Datums liegt.
    Kann mir jemand sagen, wie ich dieses richtig schreiben muss?
    Vielleicht so:
    $$TV_vgl = date("HMYmd", mktime($$stunde,$$minute,0,$$monat,$$tag,$$jahr));
    sieht sehr komisch aus?!

    Danke für Eure schnelle Hilfe.

    LG Jupp63

  • #2
    Vergleich erledigt - Lösung selbst erarbeitet:

    //Überprüfung, ob die einzelnen Datums und Zeiten hintereinander liegen
    for ($n=1;$n<$wieviele-1;$n++) {
    $stunde_v="TV".$n."_stunde";
    $minute_v="TV".$n."_minute";
    $monat_v="TV".$n."_monat";
    $tag_v="TV".$n."_tag";
    $jahr_v="TV".$n."_jahr";
    $TV_vgl_v="TV".$n;
    $stunde_n="TV".($n+1)."_stunde";
    $minute_n="TV".($n+1)."_minute";
    $monat_n="TV".($n+1)."_monat";
    $tag_n="TV".($n+1)."_tag";
    $jahr_n="TV".($n+1)."_jahr";
    $TV_vgl_n="TV".($n+1);
    $$TV_vgl_v = date("YmdHi", mktime($$stunde_v,$$minute_v,0,$$monat_v,$$tag_v,$ $jahr_v)); //spezielle Datumsformate
    $$TV_vgl_n = date("YmdHi", mktime($$stunde_n,$$minute_n,0,$$monat_n,$$tag_n,$ $jahr_n)); //zum Vergleich
    if ($$TV_vgl_v > $$TV_vgl_n) {
    echo "" . "Die " . $n . ". Teilversammlung liegt nach der " . ($n+1) . ". Teilversammlung - neues Datum oder Uhrzeit eingeben!" . "";
    exit();
    }
    }
    $stunde_vorl="TV".($wieviele-1)."_stunde";
    $minute_vorl="TV".($wieviele-1)."_minute";
    $monat_vorl="TV".($wieviele-1)."_monat";
    $tag_vorl="TV".($wieviele-1)."_tag";
    $jahr_vorl="TV".($wieviele-1)."_jahr";
    $TV_vgl_vorl="TV".($wieviele-1);
    $$TV_vgl_vorl = date("YmdHi", mktime($$stunde_vorl,$$minute_vorl,0,$$monat_vorl, $$tag_vorl,$$jahr_vorl)); //spezielle Datumsformate
    $LTV_vgl = date("YmdHi", mktime($LTV_stunde,$LTV_minute,0,$LTV_m,$LTV_d,$LT V_y));
    if ($$TV_vgl_vorl > $LTV_vgl) {
    echo "" . "Die " . ($wieviele-1) . ". Teilversammlung liegt nach der letzten Teilversammlung - neues Datum oder Uhrzeit eingeben!" . "";
    exit();
    }

    Kommentar


    • #3
      hallo,

      es gibt eine sehr einfache methode um daten (datum, uhrzeit) zu vergleichen. bau dir aus den daten die du hast ein string der form:

      yyyymmddhhMMss

      mit

      yyyy das jahr (4 stellen)
      mm der monat (2 stellen)
      dd der tag (2 stellen)

      hh die stunde (2 stellen)
      MM die minute (2 stellen)
      ss die sekunden (2 stellen)

      wichtig ist die zahl der stellen. jetzt kannst du zwei solche strings lexikalisch vergleichen bzw. sogar sortieren. das format ist ein iso-standard für zeitangaben.

      die teilstrings lassen sich sehr einfach mit führenden nullen versehen über:
      Code:
       
      substr("000".$year,-4);
      oder 
      substr("0".$month,-2);
      mario.
      Problems with Windows : REBOOT
      Problems with Linux : BE ROOT

      Kommentar

      Lädt...
      X