PHP 计算指定月天数

题目:

写出一个函数,参数为年份和月份,输出结果为指定月的天数。
其实这个函数完全自带了都不用写啊OTZ

所以我其实没懂他要我做什么。

演示

首先我们需要知道一个问题:UNIX时间戳的时间范围是1902-2038年,而用PHP提供的时间戳,不能比1970早,所以范围就被限制在了1970-2038

然后很简单的使用循环来输出下拉菜单

                for ($i = 1970; $i <= 2038 ; $i++) { 
                    if ($i == date('Y')) {
                        echo '<option value="' . $i . '" selected>'.$i.'</option>';
                    } else {
                        echo '<option value="' . $i . '">' .$i. '</option>';
                    }
                }

这里设定了一个初值,默认显示目前的时刻,这里用到了date函数,扩展阅读:http://www.php.net/manual/zh/function.date.php,关于月的输出也同样。

然后我们封装一个函数

        function days($year, $month) {
            $days = date('t', mktime(0, 0, 0, $month, 1, $year));
            return $days;
        }

mktime的扩展阅读:http://www.php.net/manual/zh/function.mktime.php

最后需要注意的是,六个参数最后三个分别是 月,日,年,而不是日月年。

这里我还使用了GET方法,但遇到了没想到的一个小问题,关于具体原因和结果,另外开文章讲。

完整源码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>计算指定月天数</title>
</head>
<body>
    <form action="days.php" method="GET">
        <select name="year">
            <?php
                for ($i = 1970; $i <= 2038 ; $i++) { 
                    if ($i == date('Y')) {
                        echo '<option value="' . $i . '" selected>'.$i.'</option>';
                    } else {
                        echo '<option value="' . $i . '">' .$i. '</option>';
                    }
                }
            ?>
        </select>
        <select name="month">
            <?php
                for ($i = 1; $i <= 12 ; $i++) { 
                    if($i == date('n')) {
                        echo '<option value="' . $i . '" selected>' . $i . '</option>';
                    } else {
                        echo '<option value="' . $i . '">' . $i . '</option>';
                    }
                }
            ?>
        </select>
        <input type="submit" value="提交">
    </form>
    <?php
        if ($_GET) {
            $year = $_GET['year'];
            $month = $_GET['month'];
            echo days($year, $month);
        }

        function days($year, $month) {
            $days = date('t', mktime(0, 0, 0, $month, 1, $year));
            return $days;
        }
    ?>
</body>
</html>

植入部分

如果您觉得文章不错,可以通过赞助支持我。

如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。

标签: 成品, 源码, 知识, 题目

仅有一条评论

  1. 题目是想让你自己判断润平年,根据月份计算出月份的天数吧

添加新评论