PHP获取52周开始/结束日期为特定年份
问题描述:
我想计算从Tuesday
开始日期和结束日期在今年Mondays
土地2016
PHP获取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这个问题废话。这是有效的,我看了,似乎无法找到我所追求的。
答
可以使用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>";
答
你可以试试下面的代码:
$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
答
虽然日期小于您定义的结束日期,但每周都会循环。
$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'));
}
答
$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;
}
发布您的PHP代码? –