PHP/MySQL-显示一年中所有星期一的日期列表

PHP/MySQL-显示一年中所有星期一的日期列表,php,mysql,select,dayofweek,Php,Mysql,Select,Dayofweek,我需要在表格上填写一个下拉列表,列出下一年所有星期一的日期 最好的方法是什么?使用MySQL表填充日期,或者是否有更智能的方法生成这些日期而不需要MySQL 所需的输出类似于: 所选选项的值将只是开始日期,因此对于图像中的第一个选项,13年3月11日将是该值 感谢您的帮助,如果这是一个愚蠢的问题,请道歉。您可以简单地使用PHP然后使用该方法。然后你可以选择一年中的第一个星期一,用这个方法加上7天52次。那将给你所有的星期一。如果你加上6天,你就可以得到截止日期。你可以简单地使用PHP然后使用这

我需要在表格上填写一个下拉列表,列出下一年所有星期一的日期

最好的方法是什么?使用MySQL表填充日期,或者是否有更智能的方法生成这些日期而不需要MySQL

所需的输出类似于:

所选选项的值将只是开始日期,因此对于图像中的第一个选项,
13年3月11日
将是该值


感谢您的帮助,如果这是一个愚蠢的问题,请道歉。

您可以简单地使用
PHP
然后使用该方法。然后你可以选择一年中的第一个星期一,用这个方法加上7天52次。那将给你所有的星期一。如果你加上6天,你就可以得到截止日期。

你可以简单地使用
PHP
然后使用这个方法。然后你可以选择一年中的第一个星期一,用这个方法加上7天52次。那将给你所有的星期一。如果您增加6天,您将获得截止日期。

此代码将输出您想要的日期列表

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";
  }
}
$i=0;$i的

我已经在
dd-mm-yyyy
格式中给出了选择选项的
,因此在处理提交的表格时,您将选择星期一。
因此,如果选择行
27 May 13至02 Jun 13
并提交表单,表单另一端的php文件将包含变量
$\u POST['date']
,其值将为
27-05-2013

,此代码将输出所需日期的列表

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";
  }
}
$i=0;$i的

我已经在
dd-mm-yyyy
格式中给出了选择选项的
,因此在处理提交的表格时,您将选择星期一。
因此,如果您选择行
27 May 13至02 Jun 13
并提交表单,表单另一端的php文件将包含变量
$\u POST['date']
,其值将为
27-05-2013

编辑:修改以支持传递开始日期,而不仅仅是一年

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');
函数getDays($year,$startMonth=1,$startDay=1,$dayOfWeek='monday'){
$start=新日期时间(
sprintf(“%04d-%02d-%02d”,$year,$startMonth,$startDay)
);
$start->modify($dayOfWeek);
$end=新日期时间(
sprintf(“%04d-12-31”,每年$1)
);
$end->modify(“+1天”);
$interval=新的日期间隔('P1W');
$period=newdateperiod($start、$interval、$end);
foreach(期间为$dt){
echo$dt->格式(“d/m/Y”)。
; } } getDays(2013年3月12日,星期一);

将输出格式化为下拉列表应该是一个简单的操作

编辑:修改为支持输入开始日期,而不仅仅是一年

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');
函数getDays($year,$startMonth=1,$startDay=1,$dayOfWeek='monday'){
$start=新日期时间(
sprintf(“%04d-%02d-%02d”,$year,$startMonth,$startDay)
);
$start->modify($dayOfWeek);
$end=新日期时间(
sprintf(“%04d-12-31”,每年$1)
);
$end->modify(“+1天”);
$interval=新的日期间隔('P1W');
$period=newdateperiod($start、$interval、$end);
foreach(期间为$dt){
echo$dt->格式(“d/m/Y”)。
; } } getDays(2013年3月12日,星期一);

将输出格式化为下拉列表应该是一个简单的练习

当人们需要帮助时,先尝试一下是礼貌的。你尝试过解决问题的方法,你遇到过什么问题。这也可以防止人们重复你可能犯过的错误,或者你放弃的尝试,当回答您的问题时。可能的重复?最好的方法是使用php,而不是使用数据库。我不知道您会怎么想先将日期放入数据库。虽然人们都在帮助您,但先尝试一些事情是礼貌的。您尝试过什么解决方案,遇到了什么问题是的。这也可以防止人们在回答你的问题时重复你可能犯过的错误或你放弃的尝试。可能的重复?最好的方法是在php中执行,而不是使用数据库。我不知道你会怎么想先将日期放入数据库中。