我需要填写表格上的下拉列表,其中包含明年所有星期一的日期?
最好的方法是什么?使用填充了日期的MySQL表,还是有更聪明的方法来生成这些日期而不需要MySQL?
所需的输出类似于:
所选选项的值只是开始的日期,因此对于图像中的第一个选项,11 Mar 13
将是值。
如果这是一个愚蠢的问题,感谢您的帮助和道歉。
答案 0 :(得分:3)
编辑:修改为支持传递开始日期而不是简单的一年
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');
将输出格式化为下拉列表应该是一个简单的练习
答案 1 :(得分:1)
您可以简单地使用PHP
,然后使用DateTime::add方法。然后你可以采取一年中的第一个星期一,并使用该方法添加7天52次。这将给你所有星期一。如果你加6天就可以得到日期。
答案 2 :(得分:1)
此代码将输出您想要的日期列表
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
。