我有這個函數返回一個年,月和日的數組,但我需要用幾周來替換這幾天,所以每個月的數組將包含星期。它不是那麼容易。獲取兩個日期之間的數年,數月和數週
$start_date = '2007-03-24';
$end_date = '2009-06-26';
year_month($start_date, $end_date);
//Returns an array containing the years, months and days between two dates
public function year_month($start_date, $end_date)
{
$begin = new DateTime($start_date);
$end = new DateTime($end_date);
$end->add(new DateInterval('P1D')); //Add 1 day to include the end date as a day
$interval = new DateInterval('P1D');
$period = new DatePeriod($begin, $interval, $end);
$aResult = array();
foreach ($period as $dt)
{
$aResult[$dt->format('Y')][$dt->format('F')][$dt->format('j')] = $dt->format('D');
}
return $aResult;
}
目前導致:
[2013] => Array
(
[October] => Array
(
[15] => Tue
[16] => Wed
[17] => Thu
[18] => Fri
[19] => Sat
[20] => Sun
[21] => Mon
[22] => Tue
[23] => Wed
[24] => Thu
[25] => Fri
[26] => Sat
[27] => Sun
[28] => Mon
[29] => Tue
[30] => Wed
[31] => Thu
)
[November] => Array
(
[1] => Fri
[2] => Sat
[3] => Sun
[4] => Mon
[5] => Tue
[6] => Wed
[7] => Thu
[8] => Fri
[9] => Sat
[10] => Sun
[11] => Mon
[12] => Tue
[13] => Wed
[14] => Thu
[15] => Fri
[16] => Sat
[17] => Sun
[18] => Mon
[19] => Tue
[20] => Wed
[21] => Thu
[22] => Fri
[23] => Sat
[24] => Sun
[25] => Mon
[26] => Tue
[27] => Wed
[28] => Thu
[29] => Fri
[30] => Sat
)
[December] => Array
(
我需要的是這樣的:
[2013] => Array
(
[October] => Array
(
[0] => week 1
[1] => week 2
[2] => week 3
[3] => week 4
[3] => week 5
您的評論說: 「1個月的間隔」,但你設定的時間間隔爲'P1D',仍然是一天。無論如何,幾個月是一個時髦的野獸。 1月31日+ 1個月應該「理論上」產生2月31日,這是一個無效的日期。你想要2月28日/ 29日(如果是閏年)還是3月2日/ 3日? –
由於DateTime函數,此當前佔用了閏年。 – user794846
@ user794846:我不太清楚'我需要用幾周時間來取代日子'。你能否將預期結果添加到問題中? –