mktime
mktime — 取得一个日期的 Unix 时间戳
说明
int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )
根据给出的参数返回 Unix 时间戳。时间戳是一个长整数,包含了从 Unix 纪元(January 1 1970 00:00:00 GMT)到给定时间的秒数。
参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。
参数
hour :小时数。
minute :分钟数。
second :秒数(一分钟之内)。
month :月份数。
day :天数。
year :年份数,可以是两位或四位数字,0-69 对应于 2000-2069,70-100 对应于 1970-2000。
is_dst :本参数可以设为 1,表示正处于夏时制时间(DST),0 表示不是夏时制,或者 -1(默认值)表示不知道是否是夏时制。
返回值
mktime() 根据给出的参数返回 Unix 时间戳。如果参数非法,本函数返回 FALSE (在 PHP 5.1 之前返回 -1)。
- <?php
- echo date ( "Y-m-d H:i:s" , mktime ( 15 , 6 , 28 , 11 , 32 , 2017 ));//2017-12-02 15:06:28 对应参数:时,分,秒;月,日,年
- echo date ( "Y-m-d H:i:s" , mktime ( 0 , 0 , 0 , 2 , 16 , 2018 ));//2018-02-16 00:00:00
- echo date ( "Y-m-d H:i:s" , mktime ( 0 , 19 , 0 , 5 , 25 , 2019 ));//2019-05-25 00:19:00
- echo date ( "Y-m-d H:i:s" , mktime ( 20 , 0 , 0 , 1 , 1 , 20 ));//2020-01-01 20:00:00
我们在项目实践中,总会有很多设计需要定时的,例如:短信、邮箱验证码我只需要每天白天8:00~20:00才执行,晚上就不执行了;再比如:我要定时备份,备份我们通常是晚上2~3点左右开始备份;再例如:我想网站每天不同时间段显示不同的主题内容......等等;
每周,每月,每年定时执行原理都是一样的;
- <?php
- date_default_timezone_set('PRC');//设置时区
- $y=date("Y",time());
- $m=date("m",time());
- $d=date("d",time());
- echo $start_time = mktime(8, 0, 0, $m, $d ,$y);//1483833600
- echo date('Y-m-d H:i:s',$start_time);//2017-01-08 08:00:00
- echo '<hr>';
- echo $end_time = mktime(20, 0, 0, $m, $d ,$y);//1483876800
- echo date('Y-m-d H:i:s',$end_time);//2017-01-08 20:00:00
- echo '<hr>';
- echo $time = time();//1483877633
- echo date('Y-m-d H:i:s',$time);//2017-01-08 20:13:53
- if($time >= $start_time && $time <= $end_time)
- {
- echo '每天8:00~20:00执行任务!';
- }
- //* 每周,每月,每年执行定时任务同理!