2016-05-18 4 views
-1

Ich habe Eingang als $fromweek=50 und $fromyear=2015 dann $toweek=2 und $toyear=2016Wie Schleife durch Wochen in verschiedenem Jahr

Wie kann ich Schleife Wochennummer in einer Tabellenspalte?

for ($i=$fromweek; $i<=$toweek; $i++) {    
    echo '<th>week '.$i.'</th>'; 
} 
+1

Normalisieren auf Zeitstempel, dann 'str_to_date' verwenden, um '+1 Woche' zu tun, bis Sie am Ende sind. –

+0

was brauchst du von diesen ?? nur '51, 52, 1' als Wochennummer? –

+0

ja ich brauche 50, 51, 52, 1, 2 wie –

Antwort

2

Sie müssen hier vorsichtig sein, da nach dem Standard ISO 8601 einige Jahre 53 Wochen haben können. Ihr Beispieljahr, 2015 is one of these.

Die Klassen \DateTime sind der Weg, dies zu tun. Sie berücksichtigen automatisch die Schaltjahre usw. und erleichtern die Datumsmanipulation. Es lohnt sich, sich die Zeit zu nehmen, sie zu lesen.

So etwas sollte für Sie arbeiten:

$fromweek=50; 
$fromyear=2015; 
$toweek=2; 
$toyear=2016; 
$interval = new DateInterval('P7D'); 

$start = (new \DateTime())->setISODate($fromyear, $fromweek); 
$end = (new \DateTime())->setISODate($toyear, $toweek); 

$period = new \DatePeriod($start, $interval, $end->add($interval)); 

foreach($period as $date){ 
    echo $date->format('d-m-Y') . PHP_EOL; 
} 

See it working.

2

Sie erstellen könnte zwei Tage, Woche und Jahr aus, und vergleicht sie (während $date1$date2 überschreitet) und $date1 von Woche erhöhen DateInterval verwenden, siehe Beispiel unten:

$date1 = new DateTime(); 
$date1->setISODate(2015, 50); 

$date2 = new DateTime(); 
$date2->setISODate(2016, 2); 

while($date1 <= $date2) { 
    echo $date1->format('W').PHP_EOL; 
    $date1->add(new DateInterval('P1W')); 
} 

In Aktion: https://eval.in/573305

+2

Das ist eine nette Lösung, die while-Schleife hält. – vascowhite

Verwandte Themen