1.前言
PHP的日期时间是非常有趣的,当然在面试时候也经常考察,这既是基础的考验,也是对自身学习是否细致的考量,下面一起把它总结一下吧。
2.日期时间常用函数的使用
2.1如何设置时区
默认是UTC,世界时间;而中国时区是PRC
2.1.1第一种:设置php文件
;第一种:设置php.ini文件[Date]date.timezone=Europe/Pairs
2.1.2第二种:动态设置时区
/*** 第二种:动态设置时区*/echo'当前时区为:'.date_default_timezone_get().'';//得到当前时区
date_default_timezone_set('Asia/Shanghai');//设置当前时区echo'当前时区为:'.date_default_timezone_get().'';
2.1.3第三种:Ini_set运行时设置选项
/**
* 第三种:Ini_set运行时设置选项
*/
echoini_get('date.timezone').'
';
ini_set('date.timezone','Asia/Shanghai');
echoini_get('date.timezone').'
';
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
代码演示:
<?phpheader ('content-type:text/html;charset:utf-8');echodate('Y-m-d H:i:s').'
';
//y表示两位的年份,n表示不带前导零的月份,j不带前导零的日期echodate('y-n-j H:i:s');
2.2.2输出年月日星期几
//动态获得星期几,date('w');获得一周内的第几天,返回值为0-6switch(date('w')) {case0:$dataSrt='日';break;case1:$dataSrt='一';break;case2:$dataSrt='二';break;case3:$dataSrt='三';break;case4:$dataSrt='四';break;case5:$dataSrt='五';break;case6:$dataSrt='六';break;default:$dataSrt='非法日期';break;
}echodate('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'
';
//对于检测今年是否是闰年,有个函数date('L'),是为1,否为0if(date('L')) {echo'今年是闰年';
}else{echo'今年不是闰年';
}
2.2.4检测本周/本天是全年第几周/第几天
//获得本周是全年的第几周
echo'
'.'本周是全年的第'.date('W').'周';
//获得本天是全年的第几天
echo'
'.'本天是全年的第'.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);echomktime(0,0,0,8,12,2016);echodate('Y-m-d H:i:s',mktime(0,0,0,8,12,2016)),'
';echodate('Y-m-d H:i:s',mktime(0,0,0,8,12)),'
';echodate('Y-m-d H:i:s',mktime(0,0,0,8)),'
';echodate('Y-m-d H:i:s',mktime(0,0,0)),'
';echodate('Y-m-d H:i:s',mktime(0,0)),'
';echodate('Y-m-d H:i:s',mktime(0)),'
';
2.3.3面试题:计算两个日期的时间差
//计算我的年龄
//出生日期
$birth=mktime(0,0,0,10,25,1996);
//获得当前时间
$time=time();
$age=floor(($time-$birth)/(24*3600*365));
2.4 strtotime函数的使用
header('content-type:text/html;charset:utf-8');
echotime(),'
';
echostrtotime('now'),'
';
echodate('Y-m-d H:i:s',time()),'
';
echodate('Y-m-d H:i:s',time()+24*3600),'
';
echodate('Y-m-d H:i:s',strtotime('+1 day')),'
';
echodate('Y-m-d H:i:s',strtotime('-1 day')),'
';
echodate('Y-m-d H:i:s',strtotime('+5 days')),'
';
echodate('Y-m-d H:i:s',strtotime('+1 month')),'
';
echodate('Y-m-d H:i:s',strtotime('+2 years 3 months 12 days')),'
';
echodate('Y-m-d H:i:s',strtotime('last Monday')),'
';
2.5微秒及其它常用日期时间函数的使用
通过microtime()获取微秒
2.5.1通过微秒实现计算PHP的执行时间
<?phpheader ('content-type:text/html;charset:utf-8');echomicrotime(),'
';echotime(),'
';echomicrotime(true),'
';echo'
';
$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中的新增表单控件
HTML5中的新增表单控件H5新增表单日期时间相关的控件
2.7.2 jquery datetimepicker 插件的使用
jquery datetimepicker 插件的使用$('#datetimepicker').datetimepicker();
还可以对其设置初始日期值,如下图所示
$('#datetimepicker').datetimepicker();
$('#datetimepicker1').datetimepicker({value:'2020-5-12'});//对其设置初始日期值
2.7.3jquery timer plugin插件的使用
jquery timer plugin插件的使用Days | Hours | Minutes | Seconds |
jQuery(function($){
$('#new_year').flipcountdown({
size:'lg',
beforeDateTime:'10/25/1996 00:00:01'//开始时间,计算距今多少天
});
});
3.总结
通过上述总结,我们基本掌握了php日期时区的多种设置方法,date()函数的应用及其设计的一些常见面试题,time()函数、mktime()函数、strtotime()函数获取不同时间时间戳,microtime()函数获取微秒,并简单地介绍了一些关于时间的JS控件的应用,希望通过本次回顾和学习,更好地掌握关于时间的函数应用。