![](/img/trans.png)
[英]How to get start date and end date of each week by providing only the year as input parameter in php?
[英]PHP Get 52 week start/end date for a specific year
我想計算從2016
年Mondays
到Tuesday
和結束日期的開始日期
我想要輸出
開始 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
...
等等等等。
任何幫助將不勝感激,並希望人們不要貶低這個問題的廢話。 它是有效的,我看起來似乎無法找到我所追求的東西。
您可以嘗試以下代碼:
$start_date=date("mdY", strtotime('tuesday this week'));
$end_date=date("mdY", strtotime('monday next week'));
它會給你從Tuesday
開始到Monday
結束的week
。
$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;
}
您可以使用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>";
當日期小於您定義的結束日期時,每周循環一次。
$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'));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.