1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<html xmlns= "http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" />
<title>月历表</title>
<?php
$MONTH = array ( "元月" , "一月" , "二月" , "三月" , "四月" , "五月" , "六月" , "七月" , "八月" , "九月" , "十月" , "十一月" , "十二月" );
$enMONTH = array ( "元月" , "January" , "February" , "Marcy" , "April" , "May" , "June" , "July" , "August" , "September" , "October" , "November" , "December" );
$WEEK = array ( "星期日" , "星期一" , "星期二" , "星期三" , "星期四" , "星期五" , "星期六" );
$BACKCOLOR = array ( "#FFC" , "#FFF" , "#9F6" , "#FFC" , "#6F0" , "#6F6" , "#F90" , "#F06" , "#F00" , "#FC3" , "#FF6" , "#F99" );
function PrintMon( $year , $mon )
{
date_default_timezone_set( "Asia/Shanghai" );
global $MONTH ;
global $enMONTH ;
global $WEEK ;
global $BACKCOLOR ;
$startdate = strtotime ( "1 $enMONTH[$mon] $year" ); //获取查询的年月
$enddate = strtotime ( "+1 month" , $startdate ); //获取下一个月的开始日期作为月历输出的截止时间
$theDate = getdate ( $startdate ); //把日期转化为字符串格式
$color = $BACKCOLOR [ $mon ]; //设置月历的背景颜色
echo ( "<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"$color\">" );
$ym = $year . "年" . $MONTH [ $mon ];
echo ( "<caption><h1>$ym</h1></caption>" );
echo ( "<tr>" );
for ( $i =0; $i <7; $i ++) //输出星期几
{
echo ( "<td width=\"90\", height=\"40\" align=\"center\" >" );
echo ( "<h2>$WEEK[$i]</h2>" );
echo ( "</td>" );
}
echo ( "</tr>" );
$theWeek = $theDate [wday]; //判断当天是星期几
for ( $i =0; $i <6; $i ++)
{
echo ( "<tr>" );
for ( $j =0; $j <7; $j ++)
{
echo ( "<td width=\"90\", height=\"40\" align=\"center\" >" );
if ( $startdate < $enddate && $theWeek == $j ) //把日期输出到对应的星期几所在列,并注意不要超出本月日期
{
$theDay = $theDate [mday];
echo ( "<h2>$theDay</h2>" );
$startdate = strtotime ( "+1 day" , $startdate ); //日期前移1天
$theDate = getdate ( $startdate ); //更新日期
$theWeek = ( $theWeek + 1) % 7; //更新星期
}
echo ( "</td>" );
}
echo ( "</tr>" );
if ( $startdate == $enddate ) //如果已经输出全部日期,结束循环
{
$i = 6;
}
}
echo ( "</table" );
}
?>
</head>
<body>
<form method= "post" action= "<?php echo $_SERVER['PHP_SELF'];?>" >
<h1>请输入要查看的年号和月份(查询范围为1970年1月1日至2038年)</h1>
<input type= "text" name= "myYear" >年<input type= "text" name= "myMonth" >月
<input type= "submit" >
</form>
<?php
$year = $_POST [ 'myYear' ];
$month = $_POST [ 'myMonth' ];
if ( is_numeric ( $year ) && $year >= 1970 && $year <2038)
{
if ( is_numeric ( $month ) && $month >= 1 && $month <=12)
{
PrintMon( $year , $month );
}
else if ( $month != NULL)
{
echo ( "月份不对" . "<br />" );
}
}
else if ( $year != NULL)
{
echo ( "年份不对" . "<br />" );
}
?>
</body>
</html>
|
相关文章
- C#委托(delegate)的常用方式- 委托的定义 // 委托的核心是跟委托的函数结构一样 public delegate string SayHello(string c); public delegate string SayHello(string c);:定义了一个公共委托类型 SayHello,该委托接受一个 string 类型的参数 c,并返回一个 string 类型的值。 Main 方法 static void Main(string args) { // 本质上其实就是把方法当作委托的参数 SayHello sayC = new SayHello(SayChinese); Console.WriteLine(sayC("欢迎大家")); SayHello sayE = new SayHello(SayEgnlish); Console.WriteLine(sayE("Welcome to")); // 简单的写法:必须类型一样 SayHello s1 = SayChinese; SayHello s2 = SayEgnlish; Console.WriteLine(s1("好好好")); Console.WriteLine(s2("Gooood")); // 最推荐 SayHello ss1 = con => con; Console.WriteLine(ss1("niiiice")); // 匿名委托:一次性委托 SayHello ss3 = delegate(string s) { return s; }; Console.WriteLine(ss3("说中国话")); } 常规实例化委托 SayHello sayC = new SayHello(SayChinese);:创建了一个 SayHello 委托的实例 sayC,并将 SayChinese 方法作为参数传递给委托的构造函数。 Console.WriteLine(sayC("欢迎大家"));:通过委托实例调用 SayChinese 方法,并输出结果。 同理,SayHello sayE = new SayHello(SayEgnlish); 和 Console.WriteLine(sayE("Welcome to")); 是对 SayEgnlish 方法的委托调用。 简化的委托赋值方式 SayHello s1 = SayChinese; 和 SayHello s2 = SayEgnlish;:当委托类型和方法签名一致时,可以直接将方法赋值给委托变量,无需使用 new 关键字。 Console.WriteLine(s1("好好好")); 和 Console.WriteLine(s2("Gooood"));:通过委托实例调用相应的方法。 使用 Lambda 表达式实例化委托 SayHello ss1 = con => con;:使用 Lambda 表达式创建委托实例 ss1,con => con 表示接受一个参数 con 并返回该参数本身。 Console.WriteLine(ss1("niiiice"));:通过委托实例调用 Lambda 表达式。 匿名委托 SayHello ss3 = delegate(string s) { return s; };:使用匿名委托创建委托实例 ss3,delegate(string s) { return s; } 是一个匿名方法,直接在委托实例化时定义了方法体。 Console.WriteLine(ss3("说中国话"));:通过委托实例调用匿名方法。 委托引用的方法定义 public static string SayChinese(string content) { return content; } public static string SayEgnlish(string content) { return content; } public static string SayChinese(string content) 和 public static string SayEgnlish(string content):定义了两个静态方法,分别接受一个 string 类型的参数 content,并返回该参数本身。这两个方法的签名与 SayHello 委托一致,可以被 SayHello 委托引用。 常规的委托实例化、简化的赋值方式、Lambda 表达式和匿名委托。委托在 C# 中是一种强大的机制,它允许将方法作为参数传递,实现了代码的灵活性和可扩展性。
- php spl标准库简介(SPL是Standard PHP Library(PHP标准库)(直接看代码实例,特别方便)
- php session学习笔记(实例代码)
- html中嵌入php代码几个实例(拼接字符和php变量)
- php代码小实例
- php 批量生成html,txt文件的方法(实例代码)
- 简单易用的分页类实例代码PHP
- php多层数组与对象的转换实例代码
- PHP实现RTX发送消息提醒的实例代码
- php 微信公众平台开发模式实现多客服的实例代码