php echo周数计算一年中的天数



这是我的脚本的一个工作演示:http://phpfiddle.org/main/code/f9b-cmr

我想做的是显示一天,然后显示一年中该天出现的天数,然后显示全年出现的总次数。

今天的例子是2013年 53个星期二中的第32个星期二

明天是星期三2013年 52个星期三中的第32个星期三

有些日子一年出现52次,有些日子出现53次。

问题是:2013年,星期二应该显示53个中的32个,但它显示了52中的32个。

如果我将mktime更改为12,31,则它显示01而不是53。

<?php
    $weekNumber = date("W");
    $weekTotal = date("W", mktime(0,0,0,12,28,date("Y")));
    if ($_SERVER["REQUEST_METHOD"] == "POST"){
        for($i=0; $i<1; $i++){ 
            $weekNumber =  "".date("W", mktime(0, 0, 0, ($_POST["month"]), ($_POST["date"]), ($_POST["year"])))."";
            $weekTotal =  "".date("W", mktime(0, 0, 0, 12, 28, ($_POST["year"])))."";
        }
    }
    ?>
    <form id="date" method='post'>
        <p>Date:
        <input type="text" id="date" name ="date" size="10" placeholder="1 - 31"/>
        Month:
        <input type="text" id="month" name ="month" size="10" placeholder="1 - 12"/>
        Year:
        <input type="text" id="year" name ="year" size="15" placeholder="101 - 9999"/>
        <input type="submit" name="submit"/></p>
    </form>
    <p><?php echo "It is week number "; echo $weekNumber; echo " out of ".$weekTotal."";?></p>

date("W")返回ISO-8601周数,该周数在接近年底时有一些有趣的技术细节。来自维基百科文章:

ISO周编号年份的最后一周是前一周01;根据对称性的定义,等价定义为:

  • 一年中最后一个星期四的那一周
  • 以最接近12月31日的周日结束的一周
  • 等等。(有关详细信息,请参阅wiki页面)

最新更新