該段使用星期日作爲一週的第一天:
$start = new DateTime('2014-10-01');
$end = new DateTime('2014-10-31 23:59');
$interval = new DateInterval('P1D');
$dateRange = new DatePeriod($start, $interval, $end);
$weekNumber = 1;
$weeks = array();
foreach ($dateRange as $date) {
$weeks[$weekNumber][] = $date->format('Y-m-d');
if ($date->format('w') == 6) {
$weekNumber++;
}
}
每週都會有所有的日子。
如果你只是想每週的第一天和最後一天,那麼你可以使用array_shift
和array_pop
來得到它們。例如,對於第一個星期,你可以使用:
$wk1Start = array_shift($weeks[1]); //gives you first day of week 1
$wk1End = array_pop($weeks[1]); // give you the last day of week 1
如果你想爲每個星期的開始和結束日期,這裏是做這件事的方式:
$ranges = array_map(function($week) {
return 'start: ' . array_shift($week)
. ', end: ' . array_pop($week); },
$weeks);
這是輸出$ranges
對我來說:
Array
(
[1] => start: 2014-10-01, end: 2014-10-04
[2] => start: 2014-10-05, end: 2014-10-11
[3] => start: 2014-10-12, end: 2014-10-18
[4] => start: 2014-10-19, end: 2014-10-25
[5] => start: 2014-10-26, end: 2014-10-31
)
錯誤的答案顯示 – 2014-11-25 05:35:49
情況是怎樣的那失敗了? – ymas 2014-11-25 05:38:18
當我打印$周獲得陣列([1] =>陣列([0] => 2014-10-01 [1] => 2014-10-02 [2] => 2014-10-03 [3] = > 2014-10-04)[2] => Array([0] => 2014-10-05 [1] => 2014-10-06 [2] => 2014-10-07 [3] => 2014 -10-08 [4] => 2014-10-09 [5] => 2014-10-10 [6] => 2014-10-11)[3] => Array([0] => 2014-10 -12 [1] => 2014-10-13 [2] => 2014-10-14 [3] => 2014-10-15 [4] => 2014-10-16 [5] => 2014-10 -17 [6] => 2014-10-18)等 – 2014-11-25 05:42:03