2015-12-15 132 views
1

我想計算從Tuesday開始日期和結束日期在今年Mondays土地2016PHP獲取52周開始/結束日期爲特定年份

我想有輸出

開始date("j/n/Y");date("j/n/Y");

我已經看過類似的SO問題,谷歌搜索,但其特定的星期#的,或者不是我試圖完成。

我想要得到的是以下內容。

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 

... 

等和soforth。

任何幫助將不勝感激,並希望人們不要downvote這個問題廢話。這是有效的,我看了,似乎無法找到我所追求的。

+0

發佈您的PHP代碼? –

回答

1

可以使用strtotime功能有2016年1月的第一週二然後循環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'));

它會給你weekTuesday開始和結束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; 
} 
相關問題