我有一个包含位置,开始日期和结束日期的简单表格。
这些是学期条款,所以范围大约是12到14周,并且不会超过年底。
我需要计算并显示日期之间星期一的所有日期(日/月)?
开始和结束日期可能是也可能不是星期一。
答案 0 :(得分:2)
您可以尝试转换datestart和end然后循环它们。当你循环它们时,使用date()
检查它是否是星期一。 date()
手册是here。
<?php
$date_from = strtotime("2016-03-01");
$date_to = strtotime("2016-04-30");
$oneDay = 60*60*24;
for($i=$date_from; $i<=$date_to; $i=$i+$oneDay)
{
if (date('N', $i) == 1) { //date('N') 1 = Monday, 2 = Tuesday....
echo date("D", $i) ." ". date('Y-m-d', $i) ."<br>";
}
}
?>
<强>输出:强>
Mon 2016-03-07
Mon 2016-03-14
Mon 2016-03-21
Mon 2016-03-28
Mon 2016-04-04
Mon 2016-04-11
Mon 2016-04-18
Mon 2016-04-25
答案 1 :(得分:0)
我制作了这段代码,显示了页面顶部的日期。
阅读表格中的所有细节。
$datesrow = $dates->row();
$date_from = strtotime($datesrow->StartDate);
$date_to = strtotime($datesrow->EndDate);
$oneDay = 60*60*24;
echo '<h2>Register</h2>';
echo '<table>';
echo '<tr><td class="register"> </td><td class="register">';
for($i=$date_from; $i<=$date_to; $i=$i+$oneDay)
{
if (date('N', $i) == $this->session->userdata('DaysID')-100):
echo date('d/m', $i) .'</td><td class="register">';
endif;
}
echo '</td></tr>';
答案 2 :(得分:0)
由于您写道您正在使用MySql,因此您可以在表格中存在的所有日期范围中恢复所有星期一(又名&#34;开始日期和#34;以及&#34;结束日期&#34;) ,您可以使用以下查询来执行此操作:
select DISTINCT * from
(select adddate('1970-01-01',t4*10000 + t3*1000 + t2*100 + t1*10 + t0) selected_date from
(select 0 t0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
(select 0 t1 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
(select 0 t2 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
(select 0 t3 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
(select 0 t4 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v,
`Tests`
where selected_date between `Tests`.`startDate` and `Tests`.`endDate` and DAYOFWEEK(selected_date)=2
你可以在sqlfiddle中测试它:http://sqlfiddle.com/
使用以下架构:
CREATE TABLE Tests
(`id` int, `startDate` DATE,`endDate` DATE)
;
INSERT INTO Tests
(`id`, `startDate`, `endDate`)
VALUES
(1, '2016-03-6', '2016-03-22'),
(2, '2016-03-6', '2016-03-22')
;
并验证上面的查询。