Wochendifferenz

  • Hallo zusammen

    Ich habe einen Timestamp, der einige Wochen zurückliegt. Nun möchte ich die Anzahl Wochen, die vergangen sind, ausgeben
    Das ist was ich habe:

    Code
    $timestart= //wird aus der Datenbank gelesen: 2012-01-06 13:52:36
    $timew = (date("W", time()))- (date("W", $timestart));

    Als Ergebnis erhalte ich immer wieder 10, ausser der Eintrag ist in der aktuellen Woche.

    Was ist das Problem?

  • Mit den einfachsten Debug-Regeln könnte man weiter kommen:

    PHP
    echo '$timestart = ' . $timestart . '<br>';
    echo 'Rechnung: ' . date("W", time()) . '-' . date("W", $timestart);
    echo '<br>Kann das richtig sein?';
  • Ok, Fehler erkannt.
    Es wird einfach -01 gerechnet, warum?
    Wahrscheinlich wegen der Formatierung? Doch wie wird dies erreicht?

  • Was erwartet die Funktion date als Parameter? Aus der Doku:

    Zitat

    string date ( string $format [, int $timestamp = time() ] )


    Da steht timestamp und 2012-01-06 13:52:36 ist garantiert kein Unix-Timestamp

    2 Mal editiert, zuletzt von Bandit (14. März 2012 um 10:42)

  • Danke, jetzt hat es geklappt, hab ich wohl übersehen.
    Habs mit strtotime in das UNIX-Timestamp Format umgewandelt, dann gings

  • Warum lässt du nicht einfach MySQL rechnen?

    Code
    select datediff(`spaltename_mit_datum`, now()) as diff_in_tagen


    Jetzt noch mit PHP die Tage in Wochen umwandeln und fertig.

  • Ok, das wäre wesentlich besser.

    Doch nun habe ich das Problem, dass zwar die Anzahl Tage stimmen, die Wochen und Tage die Vergangen sind allerdings nicht:

    PHP
    $diff			= $row->diff_in_tagen;
    				$diffd			= $diff%=7;
    				$diffw		= $diff/7;
    
    
    				$timed = ceil($diffd); //Runden auf Tage
    				$timew = ceil($diffw);//Runden auf Wochen

    Echo ergibt folgendes:
    5
    5
    0.71428571428571

    Ich möchte eben Die Anzahl Wochen UND Tage, doch vorhing gingen die Tage, darum habe ich nur nach den Wochen gefragt.