如何使用php获取一个月中的日期?

4

enter image description here我希望显示某个月份中各天的日期。我应该如何做呢?我只能输入月份并显示所有日期。

<html>
<body>
<form method="POST">
Day (Eg: Sunday) : <input name="day" required type="text" size="30" style="height:30px;" /> <br/><br/>
Month (Eg: 7) : <input name="month" required type="text" size="30" style="height:30px;" /> <br/><br/>
<input name="Submit" type="submit" value="Log In" style="background-color: #2E9AFE; border: 1px solid #084B8A;  padding: 1px 3px; color:#fff; width:60px; height:30px;" />
</form>

<?php

 $day=$_POST['day'];
 $month=$_POST['month'];
 
    function getDates($y, $m)
 {
  return new DatePeriod(
   new DateTime("first sunday of $y-$m"),
   DateInterval::createFromDateString('next sunday'),
   new DateTime("last day of $y-$m")
  );
 }

 foreach (getDates(2015, $month) as $getDay) {
  echo $getDay->format("l, Y-m-d\n");
 }

 
?>
</body>
</html>


1
你想要显示给定月份的所有日期吗? - Sulthan Allaudeen
是的,我只想显示8月份所有星期一... 你知道怎么做吗? - wendy
2个回答

1
如果您只想输入月份,则需要将其与该月的总天数迭代。
这里是eval
<?php
$Days=array();
$Month = 8;
for($d=1; $d<=31; $d++)
{
    $Time=mktime(12, 0, 0, $Month, $d, '2015');          
    if (date('m', $Time)==$Month)       
        $Days[]=date('Y-m-d-D', $Time);
}
echo '<pre>';
print_r($Days);
echo '</pre>';
?>

注意:

  1. 我已经直接给出了年份,您可以将其作为动态(用户选择)。

  2. 月份中的天数直接给出为31,您应该找到天数并将其也给出。

更新:

由于OP只想获取星期一的日期。

<?php
$Days=array();
$Month = 12;
for($d=1; $d<=31; $d++)
{
    $Time=mktime(12, 0, 0, $Month, $d, '2014');          
    if (date('m', $Time)==$Month)       
        $Day=date('D', $Time);
        if($Day=='Mon')
        {
        $Days[]=date('Y-m-d-D', $Time);
        }
}
echo '<pre>';
print_r($Days);
echo '</pre>';
?>

这里是更新的评估

但我想要八月份所有星期一的日期,而不是八月份星期一的总数。 - wendy
好的,马上就行 :) - Sulthan Allaudeen
为什么我不能像这样将星期日更改为$day?它弹出错误。"function getDates($y, $m) { return new DatePeriod( new DateTime("first: .$day. "of $y-$m"), DateInterval::createFromDateString('next $day'), new DateTime("last day of $y-$m") ); }" - wendy
这是 eval。它将为您提供本月所有的“星期一” https://eval.in/399163 - Sulthan Allaudeen
@wendy 是的,你可以使用简单的 foreach 迭代它。你想如何显示这些日期? - Sulthan Allaudeen
显示剩余3条评论

0
 $first_date = date('Y-m-d', strtotime("first  Sunday of this month", strtotime('01-07-2015')));
 $last_date  = date('Y-m-d', strtotime("last  Sunday of this month", strtotime('01-07-2015')));
 $days[]       = $first_date;
while(strtotime($first_date) <= strtotime($last_date)) {

    $first_date =   date('Y-m-d', strtotime("next  Sunday ", strtotime($first_date)));
    if(strtotime($first_date) <= strtotime($last_date)) {
        $days[] = $first_date;
    }

}
  echo '<pre>';print_r($days);exit;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接