今天我们就用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. Hadoop集群

    你可以用以下三种支持的模式中的一种启动Hadoop集群: 单机模式 伪分布式模式 完全分布式模式 单机模式的操作方法 默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程.这对调试 ...

  2. javascript 六种数据类型(一)

    js的数据类型和常见隐式转化逻辑. 一.六种数据类型 原始类型(基本类型):按值访问,可以操作保存在变量中实际的值.原始类型汇总中null和undefined比较特殊. 引用类型:引用类型的值是保存在 ...

  3. System.Data.SqlClient.SqlException (0x80131904): EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 = 1,当前计数 = 0。 EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 = 1,当前计数 = 0。

    EF使用ExecuteSqlCommand(db.Database.ExecuteSqlCommand("exec proc_DeleteCaseInfo_Output @caseID&qu ...

  4. Visual Studio for Mac 初体验

    你喜爱的 IDE,现在可用于 Mac 来自:https://www.visualstudio.com/zh-hans/vs/visual-studio-mac/ 惊不惊喜?意不意外?惊喜但不意外,因为 ...

  5. 深入理解Java常用类----String

         Java中字符串的操作可谓是最常见的操作了,String这个类它封装了有关字符串操作的大部分方法,从构建一个字符串对象到对字符串的各种操作都封装在该类中,本篇我们通过阅读String类的源码 ...

  6. Java数组的排序算法

    在Java中,实现数组的排序算法有很多,如冒泡排序法.选择排序法.直接插入法和快速排序法等.下面介绍几种排序算法的具体 实现. 本文引用文献:Java必须知道的300个问题. 1.冒泡排序法 1.1 ...

  7. 密码学之DES/AES算法

    本文示例代码详见:https://github.com/52fhy/crypt-demo DES DES全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算 ...

  8. Hibernate参数绑定的五种方式

    Hibernate参数绑定 参数绑定优点: (1)安全性 防止用户恶意输入条件和恶意调用存储过程 (2)提高性能 底层采用JDBC的PreparedStatement预定义sql功能,后期查询直接从缓 ...

  9. New Adventure----GUI Design Studio

    新建项目工程    File->New Project 新建设计文件    Project->New Design 单个设计文件的页面,F9运当前设计页面   页面控件中有绿色包围的控件为 ...

  10. bootstrap学习笔记之导航条基础

    导航条基础 导航条(navbar)和上一节介绍的导航(nav),就相差一个字,多了一个"条"字.其实在Bootstrap框架中他们还是明显的区别.在导航条(navbar)中有一个背 ...