Monat rausfinden, jahr woche und tag bekannt

  • Monat rausfinden, jahr woche und tag bekannt

    Hi,
    bin auf der suche nach einer möglichkeit den Monat rauszufinden, wenn das Jahr, die Woche und der Tag bekannt ist.

    habe es schon so probiert:

    Quellcode

    1. date('d.m.Y', strtotime("+$week week", mktime(0,0,0,1,$day-6,$year)))



    das klappt soweit für dieses jahr auch ganz gut, aber bei year++ stimmt der tag nicht mehr.. und warum es nur mit $day-6 klappt hab ich auch nich gecheckt

    wenn jemand ne lösung hat, immer her damit!


    Gruß, Nussmischung
  • hi

    2 Fragen
    es handelt sich um einen tag nach beginn der [coderwiki]Informationen/Unix[/coderwiki] epoche?
    die kalenderwoche ist bekannt? ~"date(W)"

    dann probiers damit

    Quellcode

    1. <?
    2. $time = strtotime("31 March 2005"); //Beispiel
    3. $jahr = date('Y', $time); //2005
    4. $woche = date('W', $time)-1; //12
    5. $tag = date('d', $time); //31
    6. $newTime = strtotime("+".$woche." weeks", strtotime("01 January ".$jahr));
    7. echo $tag.'.'.date('m.Y', $newTime);
    8. ?>
  • selbstverständlich ist die woche bekannt, dadrum geht es ja :)
    mit dem code komm ich jetzt aber nicht so ganz mit klar..

    die hauptseite ist eine art kalenderansicht, wo nur das jahr und die woche bekannt ist. angezeigt wird die aktuelle kalenderwoche. Mit buttons für hoch und runter..
    klicke ich nun auf montag, komme ich zu add.php und übergebe per post das jahr, die woche und den wochentag auf den ich geklickt habe.
    In add.php sollen diese Werte dann direkt in das Formularfeld Datum eingefügt werden. Format: d.m.Y (23.02.2006)

    Beispiel:

    Quellcode

    1. $year = 2006;
    2. $week = 8;
    3. $day = 4; // (Sonntag=0, Montag=1...)
    4. // was kann ich nun machen, damit ich 23.02.2006 bekomme
  • "Nussmischung" schrieb:

    selbstverständlich ist die woche bekannt, dadrum geht es ja :)


    ich sehe nur, dass der wochentag bekannt ist.
    nicht die kalenderwoche.. :o

    hier mein auf den wochentag angepasstes script

    Quellcode

    1. <?
    2. $jahr = 2006;
    3. $woche = 8;
    4. $tag = 4;
    5. $newTime = strtotime("+ ".$tag."days", strtotime("last Sunday", strtotime("+".$woche." weeks", strtotime("01 January ".$jahr))));
    6. echo date('d.m.Y', $newTime);
    7. ?>
  • ich verstehe.. es ist das "last sunday" in meiner funktion..
    denn wenn der gefundene tag ein sonntag ist, dann zieht er dennoch 7 tage ab..

    naja.. neuen code erstellt.. (mit ausgaben zum besseren verständnis)

    Quellcode

    1. <?
    2. $date= '24 March 2007'; //Beispiel
    3. $time = strtotime($date);
    4. $jahr = date('Y', $time);
    5. $woche = date('W', $time);
    6. $tag = date('w', $time);
    7. //****** PROGRAMMCODE **********
    8. echo $date.'<br />';
    9. echo '^^ das ist ein '.date('w', $time).'. Wochentag ('.date('D', $time).')<br /><br />';
    10. $newTime = strtotime("+".$woche." weeks", strtotime("01 January ".$jahr));
    11. echo date('d.m.Y', $newTime).'<br />';
    12. echo '^^ das ist ein '.date('w', $newTime).'. Wochentag ('.date('D', $newTime).')<br /><br />';
    13. $diff = ($tag - date('w', $newTime));
    14. $newTime = strtotime("+$diff days", $newTime);
    15. echo date('d.m.Y', $newTime).'<br />';
    16. echo '^^ das ist ein '.date('w', $newTime).'. Wochentag ('.date('D', $newTime).')<br /><br />';
    17. if(date('W', $newTime) != $woche) {
    18. echo 'Achtung, wir sind nun in der falschen Woche<br />';
    19. $newTime = strtotime("-1 weeks", $newTime);
    20. echo date('d.m.Y', $newTime).'<br />';
    21. echo '^^ das ist ein '.date('w', $newTime).'. Wochentag ('.date('D', $newTime).')<br /><br />';
    22. }
    23. //Kurzer Code -- bin sicher es gibt schönere lösungen
    24. $jahr = 2006;
    25. $woche = 8;
    26. $tag = 4;
    27. $newTime = strtotime("+".$woche." weeks", strtotime("01 January ".$jahr));
    28. $newTime = strtotime("+".($tag - date('w', $newTime))." days", $newTime);
    29. $newTime = (date('W', $newTime) != $woche) ? strtotime("-1 weeks", $newTime) : $neTime;
    30. ?>
    Alles anzeigen


    24 March 2005
    ^^ das ist ein 4. Wochentag (Thu)

    26.03.2005
    ^^ das ist ein 6. Wochentag (Sat)

    24.03.2005
    ^^ das ist ein 4. Wochentag (Thu)


    24 March 2007
    ^^ das ist ein 6. Wochentag (Sat)

    26.03.2007
    ^^ das ist ein 1. Wochentag (Mon)

    31.03.2007
    ^^ das ist ein 6. Wochentag (Sat)

    Achtung, wir sind nun in der falschen Woche
    24.03.2007
    ^^ das ist ein 6. Wochentag (Sat)