我必须生成一份报告,该报告将包含上周从星期一开始的数据(如果今天是星期一,那么只显示今天的日期和计数)。 我可以知道如何获得上周日期数组(从上一个星期一开始)? 感谢。
我写了这个,但在这种情况下,如果上周开始日期是31,那么第二天就变成32,这是不可能的。
$last_week_date_start = date('Y-m-d', strtotime('last monday')) + 1;
我想要一系列日期。 感谢。
答案 0 :(得分:0)
添加内部+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"
}
*/
答案 1 :(得分:0)
要遍历报告中的所有日期,您可以执行以下操作:
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)
答案 2 :(得分:0)
为什么不使用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)
如果是星期一,则使用当前信息周。您可以通过触摸修改它以满足您的需求。