今天我们就用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. Yeelink初步体验

    环境 Qemu: 2.8.0 开发板:vexpress-ca9   概述     前面的博文已经使我们的虚拟开发板具备了访问外网的目的,离物联网越来越近了.要玩物联网,Yeelink不得不说,它提供了 ...

  2. vs项目和msql不兼容解决方案

    当vs的工程项目加载了libmysql.lib 即:附加包含目录,附加库目录,附加依赖项都设置好之后,如过编译出现如下: error LNK2019: 无法解析的外部符号 _mysql_real_co ...

  3. (jquery+ajax)省市区三级联动(封装和不封装两种方式)-----2017-05-14

    首先,要实现如下图效果, 1.要理清思路: 先做出三个下拉菜单----根据第一个下拉菜单的value值获取第二个下拉列表的内容,第三个同理. 2.用到的数据库表:Chinastates表 规律:根据国 ...

  4. SpringData系列一 Spring Data的环境搭建

    本节作为主要讲解Spring Data的环境搭建 JPA Spring Data :致力于减少数据访问层(DAO)的开发量.开发者唯一要做的就是声明持久层的接口,其他都交给Spring Data JP ...

  5. Day1-三元运算及

    三元运算:result = Value1 if Condition else Vlaue2 >>> a,b,c = 1,3,5>>> d = a if a > ...

  6. Intellij Shortcuts

    ctrl+shift+F : search in whole project ctrl+hover : check the field info in brief ctrl+Q : check the ...

  7. Java反射机制剖析(三)-简单谈谈动态代理

    通过Java反射机制剖析(一)和Java反射机制剖析(二)的学习,已经对反射有了一定的了解,这一篇通过动态代理的例子来进一步学习反射机制. 1.     代理模式 代理模式就是为其他对象提供一种代理来 ...

  8. (数字IC)低功耗设计入门(二)——功耗的分析

    前面学习了进行低功耗的目的个功耗的构成,今天就来分享一下功耗的分析.由于是面向数字IC前端设计的学习,所以这里的功耗分析是基于DC中的power compiler工具:更精确的功耗分析可以采用PT,关 ...

  9. awk之随机函数rand()和srand() (转)

    转自:http://blog.chinaunix.net/uid-10540984-id-2942041.html 文件: 1234567 abcdefg ......   现在想要随机抽取5列组成下 ...

  10. hadoop 2.7.3 集群安装

    三台虚拟机,centos6.5 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 :: loca ...