Rud: Datum vergleichen ??!!??

Hi,
Ich hab schonmal deswegen geschrieben, dann nochmal selber probiert, und schließlich schreib ich nochmal.
Ich versuche zwei Daten zu vergleichen:

[CODE]
         $hilf=explode("-",$datum);
         // $datum ist ein String im Format YYYY-MM-DD

$datum_eintrag =mktime(0,0,0,$hilf[1],$hilf[2],$hilf[0]);
         $datum_jetzt   =time();
         $differenz     =$datum_jetzt-$datum_eintrag;

if ($differenz < 2410219);
         {
          ...
         }
[/CODE]

Was ist mein Fehler ... ich verzweifle langsam.
Danke schonmal im Voraus.
Rud

  1. Hallo.

    $datum_eintrag =mktime(0,0,0,$hilf[1],$hilf[2],$hilf[0]);

    Nicht ganz logisch von PHP, aber mktime hat eine eigene Reihenfolge für die Werte: http://de.php.net/mktime/:
    int mktime ( [int Stunde [, int Minute [, int Sekunde [, int Monat [, int Tag [, int Jahr [, int is_dst]]]]]]] )

    Bin da auch irgendwann verzweifelt...

    Viele Grüße
    Julian

    1. Hi Julian,
      ich denke das berücksichtigt zu haben:

      $hilf [0]    [1]  [2]
            2005 - 12 - 31
      ==> mktime (0,0,0     hilf[1], hilf[2], hilf[0]);
                       ^ bis hier her klar

      Ich denke nicht das es daran liegt.
      Rud

      1. Hi Julian,
        ich denke das berücksichtigt zu haben:

        $hilf [0]    [1]  [2]
              2005 - 12 - 31
        ==> mktime (0,0,0     hilf[1], hilf[2], hilf[0]);
                         ^ bis hier her klar

        Ich denke nicht das es daran liegt.
        Rud

        Ich habe es geraqde nochmal überprüft : es liegt definitiv NICHT an der Reihenfolge, die stimmt.

        Ich bau mir mit dem 'script' ne HTML-seite zusammen. bei der Abfrage geht es nur darum den eintrag hervorzuheben oder ebend nicht.

        if ($differenz > 1000000)
         {
          echo "<div class='1'>";
         }
         else
         {
          echo "<div class='2'>";
         }

        ich komm einfach nicht weiter - denkblockade ??

        RUD

        1. Hi,

          echo "<div class='1'>";
            echo "<div class='2'>";

          Schon mal mit korrekten Klassennamen probiert?

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          Schreinerei Waechter
          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
          1. Hi,

            echo "<div class='1'>";
              echo "<div class='2'>";

            Schon mal mit korrekten Klassennamen probiert?

            cu,
            Andreas

            Ja habe ich. sollte nur ein KURZES Beispiel sein (tippfaul).
            Das löst mein prob immer noch nicht.
            RUD

      2. Hi Rud.

        Ooops. Sollte genauer lesen und mitdenken. Tippen war schneller als Denken ;-)

        Was versuchst Du eigentlich abzufangen mit dem if {... }? Habe Dein Skript mal bei mir laufenlassen und komme auf sinnvolle Ergebnisse. Teste doch mal vor der if-Ausgabe Deine Werte per Testausgabe:

        echo "datum_eintrag: $datum_eintrag<br>";
          echo "datum_jetzt: $datum_jetzt<br>";
          echo "differenz: $differenz<br>";

        Prüft die if-Abfrage wirklich auf 27,xyz Tage Differenz?

        Viele Grüße
        Julian

        1. Hi Rud.

          Ooops. Sollte genauer lesen und mitdenken. Tippen war schneller als Denken ;-)

          Was versuchst Du eigentlich abzufangen mit dem if {... }? Habe Dein Skript mal bei mir laufenlassen und komme auf sinnvolle Ergebnisse. Teste doch mal vor der if-Ausgabe Deine Werte per Testausgabe:

          echo "datum_eintrag: $datum_eintrag<br>";
            echo "datum_jetzt: $datum_jetzt<br>";
            echo "differenz: $differenz<br>";

          Prüft die if-Abfrage wirklich auf 27,xyz Tage Differenz?

          Viele Grüße
          Julian

          Nein natürlich nicht: Der eigentliche Sinn ist die Dauer eines Acounts zu überprüfen un wenn 330 Tage um sin soll der Eintrag hervorgehober werden. Ich hab nur leider das Problem, das das Eintrags-Datum  so ein Sch*** String ist.

          RUD

          1. Hi Rud.

            Prüft die if-Abfrage wirklich auf 27,xyz Tage Differenz?
            Nein natürlich nicht: ... wenn 330 Tage um sin

            Denke, da steckt Dein Problem jetzt. Du prüfst auf Differenz < 2410219, wobei die Differenz in Sekunden errechnet wird. 2410219 Sekunden sind 2410219/60 min, 2410219/(60*60) h bzw. 2410219/(60*60*24) Tage. Wenn Du auf 330 Tage Differenz abfragen willst, so müsste es $differenz < 330*24*60*60 (=28512000) heißen.

            Gute Nacht
            Julian

  2. Hi,

    // $datum ist ein String im Format YYYY-MM-DD

    na dann mach doch sowas hier http://de2.php.net/manual/de/function.strtotime.php
    dadurch bekommst du solch einen code:

      
    $datum_eintrag = strtotime($datum);  
    $datum_jetzt = time();  
    $differenz = $datum_jetzt-$datum_eintrag;  
      
    // testweise evt. erstmal nen kleinen wert im If nehemen, kann man ja dann beliebig hochsetzten  
    if ($differenz < 60);  
    {  
     // tu was  
    }  
    
    

    Nicht zu vergessen ist der else-zweig.

    MfG

  3. Hi,

    du schreibst nicht wirklich, wie sich das Problem überhaupt äußert!? Ich würde aber mal davon ausgehen, dass dir ein wenig debugging helfen wird:

    $hilf=explode("-",$datum);
             // $datum ist ein String im Format YYYY-MM-DD

    $datum_eintrag =mktime(0,0,0,$hilf[1],$hilf[2],$hilf[0]);

    echo $hilf[0] . '-' . $hilf[1] . '-' . $hilf[2] . '<br>';

    $datum_jetzt   =time();
             $differenz     =$datum_jetzt-$datum_eintrag;

    echo $datum_jetzt . '-' . $datum_eintrag . ' = ' . $differenz;

    Gruß,
    Andreas.