最近学习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. Hibernate考试选择题解析

    1.在Hibernate中,以下关于主键生成器说法错误的是(AC). A.increment可以用于类型为long.short或byte的主键(byte类型不可以) B.identity用于如SQL ...

  2. C# ASP.NET 优化程序性能、降低内存使用、提高程序运行速度

    首先纪念一下今天的股票大跌抓个图,虽然我自己损失不是很大,但是应该大多人都损失不小.也可能有人会继续跳楼,也可能是股市一个新的转折点来了. 接着还是重点关注自己写代码优化的主题吧.软件系统当访问量不大 ...

  3. centos7.0 安装字体库

    最近在centos7.0下用itextpdf将word文档转成pdf时出现字体丢失的情况.网上找了很多资料,各式各样的原因和解决方法.后来经过一番测试发现是centos7.0 minimal没有安装相 ...

  4. EasyUI datagrildview导出excel报表

    $.extend($.fn.datagrid.methods, { toExcel: function(jq, filename){ return jq.each(function(){ var ur ...

  5. WPF MultiRangeSlider 简单实现

    WPF 多滑块Slider简单实现(MultiRangeSlider) WPF中的MultiRangeSlider,网上有商业的,有开源的,找了几个都不太理想,那就自己写 一个吧,给大家提供点思路. ...

  6. CentOS 新增swap交换空间

    在centos 6.4 64位系统中安装oracle 10g数据库软件,但由于交换空间过小导致检查不通过: 因此需要增加交换空间的大小. 第一步:在opt目录下新建swap交换文件,并设置其大小为2G ...

  7. 使用 VS Code 来编辑 markdown 文章

    一开始我就用 VS Code 来编辑 markdown 文本,只是因为 VS Code 用起来感觉很好,然后我又去寻找其他的能够预览 markdown 的编辑器,看了好多都不是很方便.突然我发现 VS ...

  8. virtual memory exhausted: Cannot allocate memory

    ~$free total used free shared buffers cached Mem: 1017832 784328 233504 356 12844 14692 -/+ buffers/ ...

  9. 86 ipmitools-查看硬件信息工具

    1.简介 IPMI(Intelligent Platform Management Interface)即智能平台管理接口是使硬件管理具备"智能化"的新一代通用接口标准.用户可以利 ...

  10. 【51Nod 1501】【算法马拉松 19D】石头剪刀布威力加强版

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1501 dp求出环状不连续的前缀和,剩下东西都可以算出来,比较繁琐. 时间 ...