我必須生成一個報告,其中包含上週從星期一開始的數據(如果今天是星期一,則只顯示今天的日期和數量)。 我可以知道如何獲取上週的日期數組(從上週一開始)? 謝謝。上週日期數組(從最近的星期一開始)
我寫了這個,但在這種情況下,如果上週的開始日期是31,那麼第二天就變成32了,這是不可能的。我想要一組日期。 謝謝。
我必須生成一個報告,其中包含上週從星期一開始的數據(如果今天是星期一,則只顯示今天的日期和數量)。 我可以知道如何獲取上週的日期數組(從上週一開始)? 謝謝。上週日期數組(從最近的星期一開始)
我寫了這個,但在這種情況下,如果上週的開始日期是31,那麼第二天就變成32了,這是不可能的。我想要一組日期。 謝謝。
在所有的報告的日子裏面添加+1
for($i=0; $i<6; $i++){
$last_week_dates[] = date('Y-m-d', strtotime('last monday + '.$i.' day'));
}
/*
array(7) {
[0]=>
string(10) "2012-08-20"
[1]=>
string(10) "2012-08-21"
[2]=>
string(10) "2012-08-22"
[3]=>
string(10) "2012-08-23"
[4]=>
string(10) "2012-08-24"
[5]=>
string(10) "2012-08-25"
[6]=>
string(10) "2012-08-26"
}
*/
要循環,你可以這樣做:
for ($date = strtotime('last monday'); $date < time(); $date += 24*60*60) {
// e.g. date('Y-m-d', $date);
}
但是,從你可以做數據庫中讀取數據:
SELECT DATE(date), COUNT(*)
FROM my_table
WHERE DATE(date) BETWEEN CURRENT_DATE - INTERVAL WEEKDAY(CURRENT_DATE) DAY
AND CURRENT_DATE
GROUP BY DATE(date)
ORDER BY DATE(date)
爲什麼不直接使用SQL爲您完成所有工作?如果你拉從MySQL數據(如你的問題標籤可能會建議),您可以使用很好地執行以下操作:
select date_sub(date_format(now(),'%Y-%m-%d'), interval WEEKDAY(now()) day) as date from dual;
這給你上週一的日期:
mysql> select date_sub(date_format(now(),'%Y-%m-%d'), interval WEEKDAY(now()) day) as date from dual;
+------------+
| date |
+------------+
| 2012-08-27 |
+------------+
1 row in set (0.00 sec)
如果是週一,它使用當前的信息周。您可以修改它以適應您的需求。
注意:結果集中沒有任何數據庫中沒有數據的日期記錄 - 人們可能仍然希望在報告中顯示這樣的日期,在這種情況下PHP中的循環(比較每個報告日期與日期排序的結果集中下一條記錄的日期)可能是最佳選擇。 – eggyal
@eggyal是的,我同意,但是當我回答時,所有的答案都指向了純粹的PHP解決方案。我想我會添加其他選項。 – Fluffeh