2

这是我的脚本的工作演示: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>
4

1 回答 1

0

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

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

  • 有今年最后一个星期四的那一周
  • 以最接近 12 月 31 日的星期日结束的一周
  • 等(有关更多信息,请参见 wiki 页面)
于 2013-08-06T19:43:24.280 回答