如何动态获取一年中所有周的列表以及每周的开始和结束日期?
每周的一天应从周一开始
提前感谢:)
代码:
$year = 2016;
$weeksOfYear = new DatePeriod(
new DateTime("$year-1 monday"),
new DateInterval('P1W'),
new DateTime("$year-12-31")
);
$weekCounter = 1;
foreach ($weeksOfYear as $startOfWeek) {
echo "Week $weekCounter => "
. "(start): "
. $startOfWeek->format('Y-m-d')
. " - (end): "
. $startOfWeek->modify('+6 days')->format('Y-m-d')
. "<br>";
$weekCounter ++;
}
输出:
Week 1 => (start): 2016-01-04 - (end): 2016-01-10
Week 2 => (start): 2016-01-11 - (end): 2016-01-17
Week 3 => (start): 2016-01-18 - (end): 2016-01-24
...
Week 51 => (start): 2016-12-19 - (end): 2016-12-25
Week 52 => (start): 2016-12-26 - (end): 2017-01-01
$weeks_arr = array();
$temp1 = Carbon::now();
$temp2 = Carbon::now();
$start_date = $temp1->startOfWeek()->subYear()->addDay();
$end_date = $temp2->endOfWeek()->addWeek();
if ($start_date->weekOfYear != $end_date->weekOfYear) {
$start_date->addWeek();
}
while ($start_date < $end_date) {
$weeks_arr[$start_date->weekOfYear]['week'] = $start_date->weekOfYear;
$weeks_arr[$start_date->weekOfYear]['start'] = $start_date->startOfWeek()->format('Y-m-d');
$weeks_arr[$start_date->weekOfYear]['end'] = $start_date->endOfWeek()->format('Y-m-d');
$start_date->addWeek();
}
return $weeks_arr;