#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>
- 目录
- 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>';
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/>';
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');
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;
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 '今年不是闰年'; }
2.2.4检测本周/本天是全年第几周/第几天
//获得本周是全年的第几周 echo '<br/>'.'本周是全年的第'.date('W').'周';
//获得本天是全年的第几天 echo '<br/>'.'本天是全年的第'.date('z').'天';
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/>';
2.3.3面试题:计算两个日期的时间差
//计算我的年龄 //出生日期 $birth=mktime(0,0,0,10,25,1996); //获得当前时间 $time=time(); $age=floor(($time-$birth)/(24*3600*365));
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/>';
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);
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>
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>
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>
3.总结
通过上述总结,我们基本掌握了php日期时区的多种设置方法,date()函数的应用及其设计的一些常见面试题,time()函数、mktime()函数、strtotime()函数获取不同时间时间戳,microtime()函数获取微秒,并简单地介绍了一些关于时间的JS控件的应用,希望通过本次回顾和学习,更好地掌握关于时间的函数应用。