Datums vergleichen und Botschaft ausgeben

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

  • Datums vergleichen und Botschaft ausgeben

    wie kann ich zwei Datume vergleichen, das aktuelle im Vergleich zu einem in der Vergangenheit. Sollte das Vergangenheitsdatum weiter als 18 Monate zurückliegen, so sollte eine Botschaft ausgegeben werden.

    ich seh da zuerst mal das problem mit dem datumsformat, da hab ich mir gedacht vielle¡cht 'amerikanisch' notieren 2006-04-20 und dann vergleichen mit heute 2006-10-11. Wie geht das nun? einfach substrahieren ?

    bin natürlich absolut unsicher, wie man das n php formuliert :
    if (2006-10-11 minus 2006-04-20 > 540)
    {
    echo "Leider ist zuviel Zeit vergangen.";
    }
    else
    {
    register.php ausführen
    }

    was passiert denn da mit den - zeichen im Datum, ändert sich das , wenn ich 2006.10.11 notiere oder ist es egal?

  • #2
    Hi,
    du musst die daten die dir als string? vorliegen erstmal
    in eine form überführen mit der php was anfangen kann.
    Dafür gibt es viele wege. Eine möglichkeit ist strtotime().
    Das aktuelle datum bekommt man zum glück sehr einfach
    mittels time().

    PHP hat von haus aus keine gute oder umfangreiche
    datum/zeit-biblieothek. Das heisst du musst die arithmetik
    selbst implemntieren. Sowohl time als auch strtotime geben
    dir einen unix-timestamp zurück. Das ist die anzahl der sekunden
    die vergangen sind seit dem 1.Januar 1970 .

    Die kannst du nun einfach subtrahieren und erhältst schon mal
    die differenz. Wenns nicht genau sein muss kannst du die sekunden
    einfach auf tage hochrechnen und dann mit deinem höchstwert
    vergleichen. Wenn dus ganz genau haben willst musst (ist meistens
    nicht der fall), dann musst du mal nach entsprechenden algorithmen
    googlen.

    Alternativ kannst du dir auch etwas mit speziellen formaten
    zusammen bauen die strtotime unterstützt. Damit
    ist auch zeitarithmetik möglich strtotime("+1 month") usw.
    aber das halte ich für suboptimal.

    greets
    (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

    Kommentar


    • #3
      Original geschrieben von closure
      Damit ist auch zeitarithmetik möglich strtotime("+1 month") usw. aber das halte ich für suboptimal.
      Halte ich in diesem Falle aber für das einfachste - mit strtotime Timestamp für 18 Monate in die Vergangenheit berechnen, und dann schauen, ob der Timestamp des zu vergleichenden Datums kleiner ist.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        und wie säh das genauer aus?

        halt ich auch fürs verständlichste. wie sieht denn der Vergleich dann in php aus? ich mein, mich verwirren die ";('){'}" und bin extrem unsicher beim spekulieren ... kenn auch die Vokabeln kaum ...

        if (strototime minus strototime("$deliverydate")>18 Monate in Sekunden)
        {
        print "Es ist leider zuviel Zeit vergangen!";
        }
        else
        {
        header "continuation.php";
        }

        ist jetzt mal ganz wild spekuliert ...
        Zuletzt geändert von infomorelos; 12.10.2006, 05:17.

        Kommentar


        • #5
          Re: und wie säh das genauer aus?

          Nicht spekulieren, sondern informieren - wenn dir die Grundkenntnisse in der PHP-Syntax fehlen, dann bitte Manual lesen.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            das braucht verdammt viel Zeit

            Ok, ich spekulier immer und setz meine "{(')'};" nach dem Versuch-Fehler System. damit komm ich meistens ans Ziel. Hier müsst ich aber zuerst mal wissen, wie man die Umwandlung in Timestamp hinkriegt. Auf welcher Seite oder in welchem Kapitel des Manuals steht denn das? Soll ich das selber finden, brauch ich wahrscheinlich 'ne Menge Zeit.
            Deshalb frag ich erst mal im Forum und lern so für die nächste ähnliche Situation.

            Kommentar


            • #7
              Re: das braucht verdammt viel Zeit

              Original geschrieben von infomorelos
              Auf welcher Seite oder in welchem Kapitel des Manuals steht denn das? Soll ich das selber finden, brauch ich wahrscheinlich 'ne Menge Zeit.
              1. Übersichtsseite des deutschsprachigen Manuals aufrufen
              2. [strg]+[f], "datum", [enter]
              3. gefundenem Link folgen
              4. Beschreibung der Funktionen aufmerksam durchlesen
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar

              Lädt...
              X