PHP之日期时间函数回顾

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>> hot3.png

  • 目录
  • 1. 前言
  • 2. 日期时间常用函数的使用
  • 2.1如何设置时区
  • 2.1.1第一种:设置php文件
  • 2.1.2第二种:动态设置时区
  • 2.1.3第三种:Ini_set运行时设置选项
  • 2.2 date函数的应用以及常用参数解析
  • 2.2.1date()函数的使用以及常用参数介绍
  • 2.2.2输出年月日星期几
  • 2.2.3检测是否是闰年
  • 2.2.4检测本周/本天是全年第几周/第几天
  • 2.3时间戳的使用
  • 2.3.1获取当前时间戳是使用time()函数
  • 2.3.2获得某个日期的时间戳是使用mktime()函数
  • 2.3.3面试题:计算两个日期的时间差
  • 2.4 strtotime函数的使用
  • 2.5微秒及其它常用日期时间函数的使用
  • 2.6其他常用时间函数的使用
  • 2.7 H5中新增日期时间相关控件的使用
  • 2.7.1 HTML5中的新增表单控件
  • 2.7.2 jquery datetimepicker 插件的使用
  • 2.7.3jquery timer plugin插件的使用
  • 3. 总结

1.前言

PHP的日期时间是非常有趣的,当然在面试时候也经常考察,这既是基础的考验,也是对自身学习是否细致的考量,下面一起把它总结一下吧。

代码分享:https://github.com/mtdgclub/timeCase

2.日期时间常用函数的使用

2.1如何设置时区

默认是UTC,世界时间;而中国时区是PRC

2.1.1第一种:设置php文件

;第一种设置php.ini文件
[Date]
date.timezone = Europe/Pairs

2.1.2第二种:动态设置时区

/**
 * 第二种:动态设置时区
 */
echo '当前时区为:'.date_default_timezone_get().'</br>';//得到当前时区
date_default_timezone_set('Asia/Shanghai');//设置当前时区
echo '当前时区为:'.date_default_timezone_get().'</br>';

up-d4b267c8466e478fc2e9d9747e12e915b83.png

2.1.3第三种:Ini_set运行时设置选项

/**
 * 第三种:Ini_set运行时设置选项
 */
echo ini_get('date.timezone').'<br/>';
ini_set('date.timezone','Asia/Shanghai');
echo ini_get('date.timezone').'<br/>';

up-2da4259170c8e1fddad2344309c7dd22172.png

2.2 date函数的应用以及常用参数解析

2.2.1date()函数的使用以及常用参数介绍

format

说明

返回值

Y

4位完整的年份

例如2020

m

月份,带前导零

01-12

d

月份中第几天,有前导零的2位数字

01-31

H

小时,24小时格式,有前导零

00-23

i

有前导零的分钟数

00-59

s

秒数,有前导零

00-59

代码演示:

<?php
header('content-type:text/html;charset:utf-8');
echo date('Y-m-d H:i:s').'<br/>';
//y表示两位的年份,n表示不带前导零的月份,j不带前导零的日期
echo date('y-n-j H:i:s');

up-9a2970740b07f2bcf15a64b75aa53465a65.png

2.2.2输出年月日星期几

//动态获得星期几,date('w');获得一周内的第几天,返回值为0-6
switch (date('w')) {
    case 0:$dataSrt='日';break;
    case 1:$dataSrt='一';break;
    case 2:$dataSrt='二';break;
    case 3:$dataSrt='三';break;
    case 4:$dataSrt='四';break;
    case 5:$dataSrt='五';break;
    case 6:$dataSrt='六';break;
    default:$dataSrt='非法日期';break;
}
echo date('Y年m月d日').' '.'星期'.$dataSrt;

up-152fa549d0efc578d109659721641f3c08f.png

2.2.3检测是否是闰年

//检测是否是闰年
//对4取余为0,对100取余不等于0或者对400取余为0
$year=date('Y');
if ($year%4==0&&($year%100!=0||$year%400==0)) {
    echo $year.'是闰年';
}else{
    echo $year.'不是闰年';
}
echo '<br/>';
//对于检测今年是否是闰年,有个函数date('L'),是为1,否为0
if (date('L')) {
    echo '今年是闰年';
}else{
    echo '今年不是闰年';
}

up-44da4af6000d4badf0ccb88023a6429d819.png

2.2.4检测本周/本天是全年第几周/第几天

//获得本周是全年的第几周
echo '<br/>'.'本周是全年的第'.date('W').'周';

up-97201a4c9a3bf6ed98373593938c2423de2.png

//获得本天是全年的第几天
echo '<br/>'.'本天是全年的第'.date('z').'天';

up-692c7b0c024e3abe33a629ada6e653359db.png

2.3时间戳的使用

时间戳:从1970年1月1日00:00:00到当前时间所经历的秒数

2.3.1获取当前时间戳是使用time()函数

2.3.2获得某个日期的时间戳是使用mktime()函数

//获得某个日期的时间戳是使用mktime()函数
//mktime(h,i,s,n,j,Y);
echo mktime(0,0,0,8,12,2016);
echo date('Y-m-d H:i:s',mktime(0,0,0,8,12,2016)),'<br/>';
echo date('Y-m-d H:i:s',mktime(0,0,0,8,12)),'<br/>';
echo date('Y-m-d H:i:s',mktime(0,0,0,8)),'<br/>';
echo date('Y-m-d H:i:s',mktime(0,0,0)),'<br/>';
echo date('Y-m-d H:i:s',mktime(0,0)),'<br/>';
echo date('Y-m-d H:i:s',mktime(0)),'<br/>';

up-a7b6ac04500d52ee821d1254c78aae61d71.png

2.3.3面试题:计算两个日期的时间差

//计算我的年龄
//出生日期
$birth=mktime(0,0,0,10,25,1996);
//获得当前时间
$time=time();
$age=floor(($time-$birth)/(24*3600*365));

up-21ba0adc0d89e5d60b6269f50ccdd106332.png

2.4 strtotime函数的使用

<?php
header('content-type:text/html;charset:utf-8');
echo time(),'<br/>';
echo strtotime('now'),'<br/>';
echo date('Y-m-d H:i:s',time()),'<br/>';
echo date('Y-m-d H:i:s',time()+24*3600),'<br/>';
echo date('Y-m-d H:i:s',strtotime('+1 day')),'<br/>';
echo date('Y-m-d H:i:s',strtotime('-1 day')),'<br/>';
echo date('Y-m-d H:i:s',strtotime('+5 days')),'<br/>';
echo date('Y-m-d H:i:s',strtotime('+1 month')),'<br/>';
echo date('Y-m-d H:i:s',strtotime('+2 years 3 months 12 days')),'<br/>';
echo date('Y-m-d H:i:s',strtotime('last Monday')),'<br/>';

up-65c39a0896e8685b1acb6f7f8c26002e5a5.png

2.5微秒及其它常用日期时间函数的使用 

通过microtime()获取微秒

2.5.1通过微秒实现计算PHP的执行时间

<?php
header('content-type:text/html;charset:utf-8');
echo microtime(),'<br/>';
echo time(),'<br/>';
echo microtime(true),'<br/>';
echo '<hr/>';
$start = microtime(true);
for($i=1;$i<=10000;$i++){
    $arr[]=$i;
}
$end = microtime(true);
echo '程序执行时间为:',round($end-$start,4);

up-01c499f683bc3b6b03fbf4df0c331173e6a.png

2.6其他常用时间函数的使用

  • getdate()//得到日期时间像个信息
  • gettimeofday()//得到当前的日期时间
  • checkdate()//验证日期的合法性,是为1,否为0

2.7 H5中新增日期时间相关控件的使用

2.7.1 HTML5中的新增表单控件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HTML5中的新增表单控件</title>
</head>
<body>
<h1>H5新增表单日期时间相关的控件</h1>
<form action="doAction.php" method="post">
    <input type="date" name="datetime" id="id_1"><br>
    <input type="datetime" name="datetime1" id="id_2"><br>
    <input type="datetime-local" name="datetime2" id="id_3"><br>
    <input type="month" name="month" id="id_4"><br>
    <input type="week" name="week" id="id_5"><br>
    <input type="time" name="time" id="id_6"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>

up-322de977c5137f52b205d9e84a02f969f9d.png

2.7.2 jquery datetimepicker 插件的使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jquery datetimepicker 插件的使用</title>
    <link href="https://cdn.bootcdn.net/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.css" rel="stylesheet">
</head>
<body>
    <form action="doAction.php" method="post">
        <input type="text" name="datetime" id="datetimepicker">
    </form>
    <script type="text/javascript" src="jquery-3.4.1.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.full.js"></script>
    <script type="text/javascript">
        $('#datetimepicker').datetimepicker();
    </script>
</body>
</html>

还可以对其设置初始日期值,如下图所示

<body>
    <form action="doAction.php" method="post">
        <input type="text" name="datetime" id="datetimepicker">
        <input type="text" name="datetime1" id="datetimepicker1">
    </form>
    <script type="text/javascript" src="jquery-3.4.1.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.full.js"></script>
    <script type="text/javascript">
        $('#datetimepicker').datetimepicker();
        $('#datetimepicker1').datetimepicker({value:'2020-5-12'});//对其设置初始日期值
    </script>
</body>

up-f7dedbe72e9d49201b2589b87dd307ccb1f.png

2.7.3jquery timer plugin插件的使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jquery timer plugin插件的使用</title>
    <script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javascript" src="jquery.flipcountdown.js"></script>
    <link rel="stylesheet" type="text/css" href="jquery.flipcountdown.css" />
</head>
<body>
<table style="border:0px;">
    <tr>
        <td style="width:110px;text-align:center;">Days</td>
        <td style="width:120px;text-align:center;">Hours</td>
        <td style="width:110px;text-align:center;">Minutes</td>
        <td style="width:120px;text-align:center;">Seconds</td>
    </tr>
    <tr>
        <td colspan="4"><span id="new_year"></span></td>
    </tr>
</table>
</body>
</html>
<script type="text/javascript">
    jQuery(function($){
        $('#new_year').flipcountdown({
            size:'lg',
            beforeDateTime:'10/25/1996 00:00:01'//开始时间,计算距今多少天
        });
    });
</script>

up-5314743df9480d6137c6aa5761aa1e95d03.png

3.总结

通过上述总结,我们基本掌握了php日期时区的多种设置方法,date()函数的应用及其设计的一些常见面试题,time()函数、mktime()函数、strtotime()函数获取不同时间时间戳,microtime()函数获取微秒,并简单地介绍了一些关于时间的JS控件的应用,希望通过本次回顾和学习,更好地掌握关于时间的函数应用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值