endlose schleife problem

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

  • endlose schleife problem

    hab versuchte die untere version anzupassen (mein versuch oben), leider ist ne endlosschleife rausgeworden, weiß nur nicht warum.

    die ursprüngliche version hatte den bug das der erste montag im jahr immer der .1.1. war



    leider isses mir nicht gelungen das zu probelm zulösen


    PHP-Code:
    <?php
    #############
        
    function get_monday_of_week($kw,$year false
        {
                if (
    $year == false$year date("Y");
                if (
    $kw || $kw 53) return false;
                
    $dayofweek = (intval(date("w",mktime(0,0,0,1,1,$year))) == 0) ? intval(date("w",mktime(0,0,0,1,1,$year)));
                
    $dayofyear 7*($kw-2)+(9-$dayofweek);
                
    $days 0;
                
    $i 1;
                while (
    true) {
                        if (
    $days+date('t',mktime(0,0,0,$i,1,$year)) < $dayofyear) {
                            
    $days += date('t',mktime(0,0,0,$i++,1,$year));
                        } else {
                            if(
    $dayofyear-$days 1) {
                                
    //$datum = 1;    //kein montag
                            
    }else{
                                return 
    $datum = ($dayofyear-$days).".".($i).".$year";
                            }
                        }
                }
        
        }
    #############
        
    function get_monday_of_week($kw,$year false) {
                if (
    $year == false$year date("Y");

                if (
    $kw || $kw 53) return false;
                
    $dayofweek = (intval(date("w",mktime(0,0,0,1,1,$year))) == 0) ? intval(date("w",mktime(0,0,0,1,1,$year)));
                
    $dayofyear 7*($kw-2)+(9-$dayofweek);
                
    $days 0;
                
    $i 1;
                while (
    true) {
                        if (
    $days+date('t',mktime(0,0,0,$i,1,$year)) < $dayofyear) {
                            
    $days += date('t',mktime(0,0,0,$i++,1,$year));
                        } else {
                            return 
    $datum = (($dayofyear-$days 1) ? : ($dayofyear-$days)).".".($i).".$year";
                        }
                }
        }
    ?>
    thx Mukraker

  • #2
    verstehe ich das richtig? deine funktion soll das datum vom Motag der angegebenen Kalenderwoche zurückgeben?
    Probiers mal so:
    PHP-Code:
    function get_monday_of_week($kw,$year false) {
        if (
    $year == false$year date("Y");
        if (
    $kw || $kw 52) return false;
        
    $ersterjan=mktime(0,0,0,1,1,$year);
        
    $dayofweek = (date("w",$ersterjan) == 0) ? intval(date("w",$ersterjan))-2// jetzt ist montag 0 und sonntag 6
        
    $dayofyear=7*($kw-1)-$dayofweek;
        return 
    date('d.m.Y l',mktime(0,0,0,1,$dayofyear,$year));
    }
    echo 
    get_monday_of_week(1,2004); 

    Kommentar

    Lädt...
    X