CodeSky 代码之空

随手记录自己的学习过程

PHP 计算指定月天数

2014-02-02 20:07分类: PHP评论: 1

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

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

演示

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

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

1				for ($i = 1970; $i <= 2038 ; $i++) { 
2					if ($i == date('Y')) {
3						echo '<option value="' . $i . '" selected>'.$i.'</option>';
4					} else {
5						echo '<option value="' . $i . '">' .$i. '</option>';
6					}
7				}
8

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

然后我们封装一个函数

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

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

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

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

完整源码:

1<!DOCTYPE html>
2<html>
3<head>
4	<meta charset="utf-8">
5	<title>计算指定月天数</title>
6</head>
7<body>
8	<form action="days.php" method="GET">
9		<select name="year">
10			<?php
11				for ($i = 1970; $i <= 2038 ; $i++) { 
12					if ($i == date('Y')) {
13						echo '<option value="' . $i . '" selected>'.$i.'</option>';
14					} else {
15						echo '<option value="' . $i . '">' .$i. '</option>';
16					}
17				}
18			?>
19		</select>
20		<select name="month">
21			<?php
22				for ($i = 1; $i <= 12 ; $i++) { 
23					if($i == date('n')) {
24						echo '<option value="' . $i . '" selected>' . $i . '</option>';
25					} else {
26						echo '<option value="' . $i . '">' . $i . '</option>';
27					}
28				}
29			?>
30		</select>
31		<input type="submit" value="提交">
32	</form>
33	<?php
34		if ($_GET) {
35			$year = $_GET['year'];
36			$month = $_GET['month'];
37			echo days($year, $month);
38		}
39
40		function days($year, $month) {
41			$days = date('t', mktime(0, 0, 0, $month, 1, $year));
42			return $days;
43		}
44	?>
45</body>
46</html>
47

评论 (1)

lujjjh2014年2月3日 19:09

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