今天我们就用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. 分针网—IT教育: Html / CSS常见问题的解决方案

    1. 解决Safari下input光标过大   2. 设置浮层   3. CSS绘制三角形   4. 清除浮动   1) 浮动元素父级添加样式   2) 父元素后添加伪元素     3) 同样可以使用 ...

  2. poj 1001 分析

    1) n = 0; return 1: 2) n = 1; bool standardizeNumNoDot(string &s){标准化是一定要得} _将‘.’前后的〇全部去除,正常retu ...

  3. 智能指针剖析(下)boost::shared_ptr&其他

    1. boost::shared_ptr 前面我已经讲解了两个比较简单的智能指针,它们都有各自的优缺点.由于 boost::scoped_ptr 独享所有权,当我们真真需要复制智能指针时,需求便满足不 ...

  4. Python 学习——高阶函数 filter 和 sorted

    filter filter函数顾名思义,筛选,通过调用函数进行筛选序列中的满足函数的子项 以实例来说话: 过滤一个序列中所有的偶数,保留奇数 另如下,过滤掉一个序列中的所有空格以及空字符等信息 可以知 ...

  5. redis集群安装部署

    (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下) 192.168.1.160:7000 192. ...

  6. 深入理解Java虚拟机 自己编译JDK

    获取JDK源码 先明确OpenJDK和Sun/OracleJDK之间,以及OpenJDK 6.OpenJDK 7.OpenJDK7u和OpenJDK 8等项目之间是什么关系,这有助于确定接下来编译要使 ...

  7. Spring+SpringMVC+MyBatis深入学习及搭建(二)——MyBatis原始Dao开发和mapper代理开发

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6869133.html 前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(一)——My ...

  8. 【JAVAWEB学习笔记】09_MySQL多表&JDBC(包含MySQL数据库思维导图)

    今天晨读单词: order:订单constraint:(强制)约束foreign key:外键references:指向orderitem:订单项join:加入resourceBundle:资源捆绑c ...

  9. 15、TCP/IP协议

    15.TCP/IP协议       几台孤立计算机系统组在一起形成网络,几个孤立网络连在一起形成一个网络的网络,即互连网.一个互连网就是一组通过相同协议族互连在一起的网络. 互联网的目的之一是在应用程 ...

  10. 1.搭建Maven 多模块应用 --Intellij IDEA 2016.3.5

    1.打开IDEA,file->new ->project  新建工程 2.建成的项目如下图,然后新建java class 模块: 右击工程名->new -> Module 3. ...