PHP/MySQL - 显示当年所有星期一的日期列表
问题描述:
我需要在下一年的所有星期一填写表单上的下拉列表,并显示所有星期一的日期。PHP/MySQL - 显示当年所有星期一的日期列表
这样做的最好方法是什么?用MySQL表填充日期,还是有一种更智能的方法来生成这些日期而不需要MySQL?
所需的输出会是这样的:
所选择的选项也只是日起,所以对于图像中的第一个选项,11 Mar 13
将是价值的价值。
感谢您的帮助和道歉,如果这是一个愚蠢的问题。
答
编辑:修改,可支持在开始日期传球而不是简单的一年
function getDays($year, $startMonth=1, $startDay=1, $dayOfWeek='monday') {
$start = new DateTime(
sprintf('%04d-%02d-%02d', $year, $startMonth, $startDay)
);
$start->modify($dayOfWeek);
$end = new DateTime(
sprintf('%04d-12-31', $year)
);
$end->modify('+1 day');
$interval = new DateInterval('P1W');
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $dt) {
echo $dt->format("d/m/Y") . '<br />';
}
}
getDays(2013, 3, 12, 'monday');
输出作为一个下拉的格式应该是一个简单的锻炼
答
这段代码将输出你想
for($i = 0; $i <= 365; $i ++){
$startdate = strtotime("today + $i day");
$enddate = strtotime("today + " . ($i + 6) . " day");
if(date('D', $startdate) == 'Mon'){
echo date('d M y', $startdate) . " to " . date('d M y', $enddate) . "\n";
}
}
为了这个显示为下拉列表中日期的列表,你需要的HTML代码添加到像这样
<select id="date" name="date">
<?
for($i = 0; $i <= 365; $i ++){
$startdate = strtotime("today + $i day");
$enddate = strtotime("today + " . ($i + 6) . " day");
if(date('D', $startdate) == 'Mon'){
echo '<option value="' . date('d-m-Y', $startdate) . '">' .date('d M y', $startdate) . " to " . date('d M y', $enddate) . "</option>";
}
}
?>
</select>
我有给定value
选择选项星期一的日期在dd-mm-yyyy
格式,所以当处理表单一旦提交你将有星期一被选中。 因此,如果您要选择行27 May 13 to 02 Jun 13
并提交表单,则表单另一端的php文件将具有变量$_POST['date']
,其值将为27-05-2013
。
虽然人的帮助,以帮助它有礼貌地先尝试自己的事情。你试过什么样的解决方案,你有什么问题。这也可以阻止人们回答你可能犯的同样的错误,或者在回答你的问题时企图丢弃。 – Ben 2013-03-12 11:16:26
http://*.com/questions/2045736/getting-all-dates-for-mondays-and-tuesdays-for-the-next-year可能的重复? – 2013-03-12 11:16:40
最好的办法是在php中完成,而不是使用数据库。我不知道你会怎么想把日期放到数据库中。 – Popnoodles 2013-03-12 11:17:08