我要求用户在某个应用程序中输入开始日期和结束日期。然后我算出了没有。在这两个日期之间的几个星期。
我想在给定的时间段内获取每周创建的文档。 我无法实现一个逻辑,它将帮助我获取第一周,第二周,第三周等等。
我将此作为数据库的输入,然后创建图形。我使用PHP作为服务器端语言。任何人都可以建议我算法。
例如:
Start date: 20/07/2012
End Date: 19/02/2013.
Total no. of days: 214.
Total no. of weeks: 30 (30 weeks and 4 days)
我想将2012年7月20日至2012年7月27日的期限取消。在此期间的文件。截至2013年2月15日。
答案 0 :(得分:0)
这里没有看到您的数据库结构是您需要的样本
SELECT YEAR(doc_created) AS report_year, WEEKOFYEAR(doc_created) AS report_week, COUNT(*) AS doc_count
FROM documents
WHERE doc_created BETWEEN '2012-07-20' AND '2013-07-19'
GROUP BY YEAR(doc_created), WEEKOFYEAR(doc_created)
按周计算分组是不够的,因为期间可能会在下一年重叠,所以我们也应该包括年份。
possible results:
year week docs
2012 1 4
2012 3 1
2013 1 65
2013 2 4
如你所知,2012年第1周将与2013年第1周重叠,如果我们只使用周数。
为您的网格/图表使用参考(年wk)和金额(docs)
例如2012wk1是4,2012wk3是1
答案 1 :(得分:-1)
Try this code:
$start_date = "20-07-2012";
$end_date = "20-08-2012 ";
while($start_date){
if(strtotime($start_date) > strtotime($end_date)){
exit;
}
$start_date = strtotime("+7 day", strtotime($start_date));
$start_date = date("d-m-Y", $start_date);
echo $start_date;
echo "<br/>";
}