用PHP写一个-万年日历表
首先,给大家展示一下效果图。
功能包括:年份和月份查询,上一年、下一年、上一月、下一月和回到今天这几个功能。
项目文件
项目代码
1.php
<?php echo "<pre>";//设置时区//date_default_timezone_set('America/New_York');//1.获取时间戳var_dump(time());//2.格式化时间戳var_dump(date('Y-m-d H:i:s',time()));//3.将一个指定的日期时间转换为时间戳//var_dump(mktime('时','分','秒','月','日','年'));var_dump(mktime('10','30','59','12','30','2001'));//4.将一个字符串格式的日期,转换为时间戳var_dump(date('Y-m-d H:i:s',strtotime("+1day"))); //明天的现在这个时候var_dump(date('Y-m-d H:i:s',strtotime("-1day"))); //昨天的现在这个时候var_dump(date('Y-m-d H:i:s',strtotime("-1week"))); //上周的现在这个时候var_dump(date('Y-m-d H:i:s',strtotime("-1month"))); //上个月的现在这个时候var_dump(date('Y-m-d H:i:s',strtotime("-1year"))); //上个月的现在这个时候var_dump(date('Y-m-d H:i:s',strtotime("-1year +1month +2week +2day"))); //上个月的现在这个时候
?>
calendar_new.php
<!DOCTYPE html>
<html><head><title>万年历</title><meta charset="utf-8"/></head><body><?php //获取用户查询的年份和月份$year = isset($_GET['year'])==true ? $_GET['year'] : date('Y');$month = isset($_GET['month'])==true ? $_GET['month'] : date('m');//只对$_GET有效// $year = $_GET['year'] ?? date('Y');// $month = $_GET['month'] ?? date('m');$new_year = date('Y',time());// echo $new_year;$new_month = date('m',time());// echo $new_month;$new_days = date('d',time());//获取当前月第一天的时间戳$time = mktime(0,0,0,$month,1,$year);//1.首先,获取万年历前方的空格$first = date('N',$time)-1; //0//2.然后,获得当前月的天数$days = date('t',$time); //30//3.最后,求得万年历后方的空格$last = 42-$first-$days //12?><center><h2>万年历</h2><h3><?= $year ?> 年 <?= $month ?> 月</h3><form action="./calendar_new.php" method="get">年份:<select name='year'><?php for($y=1970; $y<=2100; $y++){if($y==$year){echo "<option selected value='{$y}'>{$y} 年</option>";}else{echo "<option value='{$y}'>{$y} 年</option>";}}?></select>月份:<select name='month'><?php for($m=1; $m<=12; $m++){if($m==$month){?><option selected value="<?= $m ?>"><?= $m ?> 月</option><?php}else{?><option value="<?= $m ?>"><?= $m ?> 月</option><?php }}?></select><input type="submit" value="查询"/></form><br/><table border='1' width='800' cellspacing='0' cellpadding='5'><tr><th>一</th><th>二</th><th>三</th><th>四</th><th>五</th><th>六</th><th>日</th></tr><tr align='center'><?php //定义一个统计单元格个数的空变量$num = 0;$new_days = date('d',time());//1.循环表格中前方的空格for($i=1; $i<=$first; $i++){echo "<td> </td>";++$num;//判断单元格是否到达7的倍数if($num%7==0){echo "</tr><tr align='center'>";}}//2.循环表格中中间的日期for($j=1; $j<=$days; $j++){// echo $year;// echo $month;if(($j==$new_days) && ($year==$new_year) && ($month==$new_month) ){echo "<td><font color=red>{$j}</font></td>";++$num;}else{echo "<td>{$j}</td>";++$num;}//判断单元格是否到达7的倍数if($num%7==0){echo "</tr><tr align='center'>";}}//3.循环表格最后的空格for($k=1; $k<=$last; $k++){echo "<td> </td>";++$num;//判断单元格是否到达7的倍数if($num%7==0){echo "</tr><tr align='center'>";}}?></tr></table><br/><a href="./calendar_new.php?year=<?= $year-1 ?>&month=<?= $month ?>">上一年</a><a href="./calendar_new.php?year=<?= $prevy ?>&month=<?= $prevm ?>">上一月</a><a href="./calendar_new.php">回到今天</a><a href="./calendar_new.php?year=<?= $nexty ?>&month=<?= $nextm ?>">下一月</a><a href="./calendar_new.php?year=<?= $year+1 ?>&month=<?= $month ?>">下一年</a></center></body>
</html>
大家可以直接复制代码,放到对应的文件名里就可以运行。适合初学php的人学习使用。
用PHP写一个-万年日历表相关推荐
- 用Java写的一个万年日历
用Java写的一个万年日历 当我们学过分支结构语句和循环语句后,我们可以简单的完成一个小案例: 通过输入具体的年月日,输出此年此月此日为星期几,并打印此月日历. 说一下我的思路: 首先第一步,先实现输 ...
- java 手编线程池_死磕 java线程系列之自己动手写一个线程池
欢迎关注我的公众号"彤哥读源码",查看更多源码系列文章, 与彤哥一起畅游源码的海洋. (手机横屏看源码更方便) 问题 (1)自己动手写一个线程池需要考虑哪些因素? (2)自己动手写 ...
- 用python给自己写一个加密算法
前言 我们经常在写程序的过程中需要给自己写一些敏感的信息,比如密码,那么我们如何给自己的密码加密呢?现在我们自己来给自己写一个加密和解密的程序 程序 # coding:utf-8# !/usr/bin ...
- 写一个通用数据访问组件
出处:http://www.csharp-corner.com willsound(翻译) 我收到过好多Email来问我如何用一个通用的数据提供者(data provider)在不失自然数据提供者(n ...
- 用JDBC写一个学生管理系统(添加、删除、修改、查询学生信息)(二)
本文上接用JDBC写一个学生管理系统(添加.删除.修改.查询学生信息) 这次主要是对上一文中的查询方法做一下调整,用创建内部类的方法来实现学生信息的查询. 我们先要定义一个接口IRowMapper: ...
- 用JDBC写一个学生管理系统(添加、删除、修改、查询学生信息)
首先需要用Navicat Premium创建一个student表 用Java连接好MySQL数据库(需要copy一个mysql-connector-java-5.1.44-bin.jar包,该包可在网 ...
- 不用任何第三方,写一个RTMP直播推流器
2016年是移动直播爆发年,不到半年的时间内无数移动直播App掀起了全民直播的热潮.然而个人觉得直播的门槛相对较高,从推流端到服务端器到播放端,无不需要专业的技术来支撑,仅仅推流端就有不少需要学习的知 ...
- 使用Node.js写一个简单的api接口
引入Http模块 默认你已经安装了Node.js Node当中内置了Http模块: 可以使用 var http= require("http"); 复制代码 引入http模块: H ...
- python写一个通讯录step by step V3.0
python写一个通讯录step by step V3.0 更新功能: 数据库进行数据存入和读取操作 字典配合函数调用实现switch功能 其他:函数.字典.模块调用 注意问题: 1.更优美的格式化输 ...
最新文章
- 关于rtsp的时间戳问题
- java 毫秒转时间字符串_java 时间字符串 转换 毫秒
- java反序列化weblogic_[Todo]Java反序列化-weblogic
- Transaction中的SQL死锁
- SAP HANA学习笔记
- eb8000软件怎样上传_百度网盘如何免费上传超过4G的文件?BitComet来帮你!
- 分享网页加载速度优化的一些技巧?
- java 手机网站 cookie操作_java操作cookie问题
- 【HTML+CSS网页设计与布局 从入门到精通】第15章-表格格式:边距/居中/边框/折叠
- Ansible Synopsis
- LoadRunner 11 error:Cannot initialize driver dll
- 图的存储结构之邻接表(详解)
- 人工智能平台 H2O.ai
- php自定义类生成lib,thinkphp引入自定义封装类
- Web---session技术代码演示(request,session,servletContext)
- GridView 中取值的方法汇总
- 【第43题】【062题库】2019年OCP认证062考试新题
- [无视][mark]退役记
- Python 防止反编译
- svnadmin load 遇到E125005 的错误