最近学习php循环、日期显示、GET方式请求,进而实现了一个小程序。

直接上代码:

<?php
header("Content-type:text/html; charset=UTF-8");
echo '
<html>
<head>
<title>万年历</title>
<script type="text/javascript">
function startTime()
{
var today=new Date()
var h=today.getHours()
var m=today.getMinutes()
var s=today.getSeconds()
m=checkTime(m)
s=checkTime(s)
document.getElementById('."'".'txt'."'".').innerHTML=h+":"+m+":"+s
t=setTimeout('."'".'startTime()'."'".',500)
} function checkTime(i)
{
if (i<10) {
i="0" + i
}
return i
}
</script>
</head>
<body onload="startTime();"><br>';
$y = date('Y');
$m = date('m');
$d = date('d'); if (!preg_match("/\b(1[0-2])\b|\b[0-9]\b|\b0[0-9]\b/", $_GET['m']) && $_GET['m'] ) {
echo '<script>alert("你查询月份有误!");</script>';
} elseif (!preg_match("/^\d+\d\b/", $_GET['y'])&&$_GET['y']) {
echo '<script>alert("你查询年份有误!");</script>';}
else {
$year = $_GET['y'] ? $_GET['y'] : $y;
$month = $_GET['m'] ? $_GET['m'] : $m;
$days = date('t', strtotime("{$year}-{$month}-1"));
$week = date('w', strtotime("{$year}-{$month}-1"));
if ($month == 1) {
$prevyear = $year - 1;
$prevmonth = 12;
} else {
$prevyear = $year;
$prevmonth = $month - 1;
}
if ($month == 12) {
$nextyear = $year + 1;
$nextmonth = 1;
} else {
$nextyear = $year;
$nextmonth = $month + 1;
} echo "<center>";
//echo '<h1 onload="startTime()">这是一个时间:</h1>';
echo "{$year}年{$month}月一共{$days}天<br>";
echo '<h2><a href="万年历.php?y='.$prevyear.'&m='.$prevmonth.'">上一个</a>|<a href="万年历.php?y='.$nextyear.'&m='.$nextmonth.'">下一个</a>';
echo "</h2><div><h2>{$year}年{$month}月</h2>";
echo '<table width="700px" border="1px">';
echo '<tr>';
echo '
<td>周日</td>
<td>周一</td>
<td>周二</td>
<td>周三</td>
<td>周四</td>
<td>周五</td>
<td>周六</td>';
echo "</tr><br>";
for ($i=1-$week; $i <= $days;){
echo "<tr>";
for ($j=0; $j < 7; $j++) {
if ($i > $days || $i < 1) {
echo "<td>&nbsp</td>";
} elseif($month==$m&&$year==$y&&$i == $d){
echo '<td bgcolor="#7FFFD4">'.$i.'</td>';
}else {
echo "<td>{$i}</td>";
}
$i++;
}
echo "</tr><br>";
}
echo "</table></div>";
}
echo '<div id="txt" align="right"></div></body></html>';
?>

源码特点:

  1. 通过GET提交年份与月份

  2. 运用正则表达式进行输入合法性

  3. 判断年份是否闰年

  4. 日历框架,显示对应星期

  5. 利用javascript显示当前时刻表

php万年历的更多相关文章

  1. c#实现万年历示例分享 万年历农历查询

    cs.cs(类页面) using System;using System.Collections.Generic;using System.Linq;using System.Web; namespa ...

  2. 小JAVA大世界之万年历

    import java.util.Scanner; public class Calendar { public static void main(String[] args) { // 万年历 in ...

  3. PHP世纪万年历

    <?  //世纪万年历  #这是唯一的设置-请输入php文件的位置  $file="http://192.168.1.168/php/rl/s2m.php";  //#农历每 ...

  4. C#实现万年历(农历、节气、节日、星座、属相、生肖、闰年等)

    C# 万年历 农历 节气 节日 星座 星宿 属相 生肖 闰年月 时辰等,代码如下: using System.Collections.Generic; using System.Text; using ...

  5. STM32的RTC万年历显示问题

    博客整理后写出来的,有点乱,大家见谅! 想让串口输出万年历效果.每次秒刷新一次 结果是串口软件一直输出,看起来很难受 先讲一讲C代码的\r和\n的区别 \r 就是return 回到 本行 行首 这就会 ...

  6. java 面向过程实现万年历

    public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-gener ...

  7. [C语言练习]万年历加强版

    /** * @copyright 2011 Chunhui Wang * * wangchunhui@wangchunhui.cn */ #include<stdio.h> int mai ...

  8. IT第六天 - eclipse快捷操作、万年历项目的编写、菱形的打印输出、代码简化

    IT第六天 上午 小项目 1.程序提前结束的退出标志 2.登录用户的模拟,给出适当的提示信息 3.根据要求,寻找规律,然后编写程序 Eclipse的使用 1.快捷键的使用 下午 中小项目 1.九九乘法 ...

  9. OC-之NSDate、万年历

    万年历计算星期-基姆拉尔森公式 #include /* * 基姆拉尔森计算公式* W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7*/int week(int ...

随机推荐

  1. 深入浅出SQL笔记1–数据和表

    1.数据库的概念及组成 数据库是保存表和其他相关SQL结构的容器. 数据库是由各种各样的表构成的,一个数据库里面的表总是存在相互联系的关系. 数据库内的信息组成了表,表示由行和列构成的,行是一组能够描 ...

  2. iOS Webview 实现修改javascript confirm 和 alert

    贴代码: @interface UIWebView (JavaScriptAlert) -(void) webView:(UIWebView *)sender runJavaScriptAlertPa ...

  3. 简单了解ICMP协议

    ping命令是什么协议? 维基百科: ping是一种电脑网络工具,用来测试数据包能否通过IP协议到达特定主机.ping的运作原理是向目标主机传出一个ICMP echo@要求数据包,并等待接受echo回 ...

  4. ios9适配系列教程——ios9新变化

    Demo1_iOS9网络适配_改用更安全的HTTPS iOS9把所有的http请求都改为https了:iOS9系统发送的网络请求将统一使用TLS 1.2 SSL.采用TLS 1.2 协议,目的是 强制 ...

  5. 修改AssemblyInfo.cs自动生成版本号

    一. 版本号自动生成方法 1.把 AssemblyInfo.cs文件中的[assembly:AssemblyVersion("1.0.0.0")]改成[assembly:Assem ...

  6. 81 dumpe2fs-打印“ext2/ext3”文件系统的超级块和快组信息

    dumpe2fs打印"ext2/ext3"文件系统的超级块和快组信息. 语法 dumpe2fs (选项) (参数) 选项 -b:打印文件系统中预留的块信息: -ob<超级块& ...

  7. canvas弹动

    弹动,和缓动类似,不过是在终点前反复运动几次达到反弹的效果,具体的算法就是用目标点(target)和物体(mouse)的距离乘以系数累加至坐标上,这样就会有简单的弹动效果,但是一般的弹动效果都是慢慢变 ...

  8. C#稳固基础:传统遍历与迭代器

    Hello,Coders.我们除了天天的码 if…else…之外,还会不断的码出foreach.我今天要说的是:传统遍历需实现的接口及我们还有一种更简洁优雅的方式实现多种迭代器. 传统遍历 传统的遍历 ...

  9. hdu3530 单调队列

    Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  10. redis-删除所有key

    删除所有Key,可以使用Redis的flushdb和flushall命令 //删除当前数据库中的所有Key flushdb //删除所有数据库中的key flushall 如果要访问 Redis 中特 ...