2015-12-15 2 views
1

Я хотел бы, чтобы вычислить дату начала из Tuesday и конечную дату, чтобы приземлиться на Mondays в год 2016PHP Получить 52 недели Дата начала/окончания в течение определенного года

Я пытаюсь иметь выход

начатьdate("j/n/Y");конецdate("j/n/Y");

Я посмотрел на аналогичные вопросы SO, и Google поиск, но его конкретных недельных #, то или не то, что я пытаюсь сделать.

То, что я пытаюсь получить, следующее.

Start: 12/14/2015 
End 12/21/2015 
    Start: 12/22/2015 
End 12/28/2015 

    .... 

    Start: 01/05/2016 
End 01/11/2016 
    Start: 01/12/2016 
End 01/18/2016 

... 

и так далее.

Любая помощь была бы принята с благодарностью, и надеемся, что люди не уменьшат дерьмо из этого вопроса. это действительно, и я посмотрел и не могу найти то, что мне нужно.

+0

Опубликовать свой php-код? –

ответ

1

Вы можете использовать функцию strtotime иметь первый вторник от января 2016 года и затем цикл 52 раз, используя следующий понедельник и завтра. Поэтому вам не нужно делать никаких расчетов.

<?php 
$ts=strtotime("tuesday january 2016"); 
echo "<table>"; 
for ($i=0;$i<52;$i++) { 
    echo "<tr><td>Start: ".date("Y/m/d", $ts); 
    $ts=strtotime("next monday", $ts); 
    echo "</td><td>End: ".date("Y/m/d", $ts)."</td>\n"; 
    echo "</td><td>Payweek: ".date("W", $ts)."</td></tr>\n"; 
    $ts=strtotime("tomorrow", $ts); 
} 
echo "</table>"; 
+0

Как насчет того, чтобы добавить неделю оплаты после окончания эха? например, 1,2,3,4 ... 52, чтобы указать, на какой неделе платить # @Adam – Kray

+1

Я добавил неделю оплаты в последнем столбце, используя 'date (" W ", $ ts)' – Adam

1

Вы можете попробовать следующий код:

$start_date=date("m-d-Y", strtotime('tuesday this week'));

$end_date=date("m-d-Y", strtotime('monday next week'));

Это даст вам week начиная от Tuesday и заканчивая от Monday.

+0

Это заставило меня начать в правильном направлении, теперь вопрос заключается в том, как зацикливать это на 52 недели с указанного года. – Kray

0

Пока дата меньше заданной даты окончания, переходите через каждую неделю.

$date = Some start date ...; 
$endDate = Some end date ...; 

while (date_interval_format($date->diff($endDate),'%R') == '+') { 
    echo $date->format('j/n/Y') . " - " . $date->add(new DateInterval('P6D'))->format('j/n/Y') . "\n"; 
    $date->add(new DateInterval('P1D')); 
} 
1
$oneWeek = 7*24*60*60; // 1 week in seconds 
$curr_ts = time(); 
while ($curr_ts < strtotime('2017-01-01')) { 
    echo " Start: ", 
     date('m/d/Y', strtotime('tuesday this week', $curr_ts)), 
     "\nEnd ", 
     date('m/d/Y', strtotime('monday next week', $curr_ts)), 
     "\n"; 
    $curr_ts = $curr_ts + $oneWeek; 
} 
Смежные вопросы