今天我们就用php中的数组合date 做一个日历。

先让我们回顾一下PHP里面的date 。

1、时间戳:表示从计算机元年/UNIX纪年(0时区 1970/1/1 00:00:00)到当前事件的秒数。是一个长整形的数字。
2、取到时间戳的函数:
 ① time():返回当前时间的时间戳;
 ② mktime():根据设置的时间,返回时间戳。
 设置的格式:时,分,秒,月,日,年
 ③ strtotime():将输入的字符串日期转为时间戳;
 eg:echo strtotime("2017-06-02 09:42:00");
 echo strtotime("July 1st, 2008 09:42:00");
 echo strtotime("now");
 echo strtotime("+1 day");
 3、时间戳的格式化:
 ① 使用getdate()函数:(并不常用);
 返回一个数组,数组的键值如下
 'seconds' => int 47 秒
'minutes' => int 56 分
'hours' => int 9 小时
'mday' => int 2 一个月的第几天
'wday' => int 5 一个周的第几天
'mon' => int 6 数组的几月
'year' => int 2017 年份
'yday' => int 152 一年中的第几天
'weekday' => string 'Friday' (length=6) 字符串的英文周几
'month' => string 'June' (length=4) 字符串的英文月份
0 => int 1496368607 原始的时间戳
 ② 使用date()函数:非常常用
 String date(String "格式化字符串"[,int 时间戳 = time()]);
 格式化的字符串:
 Y:四位数年 m:月01-12 n:月1-12 d:天01-31 j:天1-31
    H:时24时制 h:小时12制 i:分钟00-59 s:秒00-59 w:星期几0-6
    A:上午AM或下午PM a:上午am或下午pm。
 4、时区设置:
 ① 修改php.ini配置文件:
 date.timezone = Etc/GMT-8
 ② 使用date_default_timezone_set();函数
 date_default_timezone_set("Etc/GMT-8");//直接指定时区,西加东减
 date_default_timezone_set("PRC");//中华人民共和国
 date_default_timezone_set("Asia/Shanghai");//亚洲上海

 取到当前时区设置:date_default_timezone_get();
 5、了解microtime(true);取到从计算机元年到现在的微秒数;
 默认显示为0.78026400 1496372572 单位为秒,前面是小数点后部分,后面为小数

下面我们就开始写代码喽!

date_default_timezone_set("PRC");

//取到 年  月  日
$time = getdate();
$mday = $time["mday"];
$mon = $time["mon"];
$year = $time["year"];

//判断一下一年中各个月份有几天的情况
if($mon==4||$mon==6||$mon==9||$mon==11){
$day = 30;
}elseif($mon==2){
if(($year%4==0&&$year%100!=0)||$year%400==0){
$day = 29;
}else{
$day = 28;
}
}else{
$day = 31;
}

//取到这个月的1号是第几天,
$w = getdate(mktime(0,0,0,$mon,1,$year))["wday"];

//制作日历的大框架。用for遍历数组,打印出一个日历的格式。
$date = function($day,$w){
echo "<table border='1'>";
echo "<tr><th>星期日</th><th>星期一</th><th>星期二</th><th>星期三</th><th>星期四</th><th>星期五</th><th>星期六</th></tr>";
$arr = array();
for($i=1;$i<=$day;$i++){
array_push($arr,$i);
}
if($w>=1&&$w<=6){
for($m=1;$m<=$w;$m++){
array_unshift($arr,"");
}
}
$n=0;
for($j=1;$j<=count($arr);$j++){
$n++;
if($n==1) echo "<tr>";
global $mday;
if($mday==$arr[$j-1]){

//把今天的这一天加一个颜色
echo "<td width='80px' style='background-color: greenyellow;'>".$arr[$j-1]."</td>";
}else{
echo "<td width='80px'>".$arr[$j-1]."</td>";
}

if($n==7){
echo "</tr>";
$n=0;
}
}
if($n!=7)echo "</tr>";

echo "</table>";
};
$date($day,$w);

这是效果图。

这样我们的一个简单的日历就做完了。

PHP完成一个日历的更多相关文章

  1. 用JAVA写一个日历计划

    效果图(自己需要在前台加css修饰)

  2. 调用Android自带日历功能(日历列表单、添加一个日历事件)

    调用Android自带日历功能  觉得这篇文章不错,转载过来. 转载:http://blog.csdn.net/djy1992/article/details/9948393 Android手机配备有 ...

  3. Android 一个日历控件的实现代码

    转载  2017-05-19   作者:Othershe   我要评论 本篇文章主要介绍了Android 一个日历控件的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看 ...

  4. java基础1.5版后新特性 自动装箱拆箱 Date SimpleDateFormat Calendar.getInstance()获得一个日历对象 抽象不要生成对象 get set add System.arrayCopy()用于集合等的扩容

    8种基本数据类型的8种包装类 byte Byte short Short int Integer long Long float Float double Double char Character ...

  5. cal - 显示一个日历

    总览 cal [-mjy ] [月份 [年份 ] ] 描述 Cal 显示一个简单的日历.. 如果没有指定参数, 则显示当前月份. 选项如下所列: -m 显示星期一作为一周的第一天.. (缺省为星期日. ...

  6. 用JAVA代码构造一个日历

    package day0603; import java.text.ParseException; import java.text.SimpleDateFormat; import java.uti ...

  7. 2017.12.2 用java做一个日历

    1.先判断输入的日期是否为闰年 2.在判断输入的月份是否为2月 3.在获取输入的年份和月份的1月1日 的列数 4.在输出 import java.util.*; public class demo{ ...

  8. django项目使用layui插件给网站设置一个日历挂件,很简单实用。

    进入https://www.layui.com/首页下载layui文件 下载解压后把文件放在static静态文件中, html页面引入css和js <link rel="stylesh ...

  9. vue 自己写的一个日历

    样式: //quanbu全部代码 <template> <div class="priceListContent clearfix"> <!-- 顶部 ...

随机推荐

  1. phtread_mutex 组合

    phtread_mutex通过mutexattr设定其类型,并保存在成员__kind中.pthread_mutex的锁操作函数根据__kind进行方法的分派(dispatch).__kind由5个字段 ...

  2. 博弈论(Game Theory) - 01 - 前传之占优战略均衡

    博弈论(Game Theory) - 01 - 前传之占优战略均衡 开始 我们现在准备攀爬博弈论的几座高峰. 我们先看看在纳什均衡产生之前,博弈论的发展情况. 我们的第一座高峰是占优战略均衡. 囚徒困 ...

  3. 【树莓派】为树莓派配置或扩展swap分区

    ---恢复内容开始--- 由于树莓派3的默认内存只有1G,而应用程序运行过程中,存在大量的IO读写,以及网络转换,内存交换等.这样,也有很多buffer.cache资源占用等,很快就会接近1GB,最终 ...

  4. [原创]JS实现数据筛选(each)

    做列表的时候,有时候需要按照某些条件进行查询,如班级,分组之类.但是又不想在重新从服务器获取数据,可以进行隐藏

  5. [笔记]我的Linux入门之路 - 04.Eclipse安装

    首先,要安装ecliose自然是先要有Java环境.在上一篇已经安装好了,不再赘述. 一.下载 Eclipse官网 下载下来的文件":eclipse-inst-linux64.tar.gz ...

  6. [刷题]算法竞赛入门经典(第2版) 5-9/UVa1596 - Bug Hunt

    //开学了,好烦啊啊啊啊啊!怎么开个学那么多破事情!!都俩星期了,终于有时间写出来一道题 题意:不难理解,不写了.这几天忙的心累. 代码:(Accepted, 0.010s) //UVa1596 - ...

  7. JS中this到底指向谁?

    关于this的指向,是一个令人很头疼的问题.但是,你运气好,碰到了我.老夫这儿有本祖传秘籍,看懂这个,妈妈再也不用担心你的this指向不对啦! 归根结底,this指向就一句话:谁最终调用函数,this ...

  8. 【JS中循环嵌套常见的六大经典例题+六大图形题,你知道哪几个?】

    首先,了解一下循环嵌套的特点:外层循环转一次,内层循环转一圈. 在上一篇随笔中详细介绍了JS中的分支结构和循环结构,我们来简单的回顾一下For循环结构: 1.for循环有三个表达式,分别为: ①定义循 ...

  9. Unity应用架构设计(10)——绕不开的协程和多线程(Part 2)

    在上一回合谈到,客户端应用程序的所有操作都在主线程上进行,所以一些比较耗时的操作可以在异步线程上去进行,充分利用CPU的性能来达到程序的最佳性能.对于Unity而言,又提供了另外一种『异步』的概念,就 ...

  10. 阿里云服务器:IIS网站的架设(一、环境设置与安装IIS网站 二、网站的基本设置 三、建立新网站(未完待续))

    Windows Server 2012 R2的Internet Information Services (IIS)网站的模块化设计,可以减少被攻击面并减轻管理负担,让系统管理员更容易架设安全的具备高 ...