您现在的位置是:首页> 网站开发> PHP

PHP中时间和日期常用函数

  • 4689人已阅读
  • 时间:2020-02-01 10:08:57
  • 分类:PHP
  • 作者:祥哥

1.时间戳函数:

    时间戳:是指自1970-1-1 0:0:0到现在所过去的秒数

time(void)返回当前的unix时间戳返回值到秒
microtime([bool|$get_as_float])返回当前的时间戳和微秒数
echo time();//1528465346
echo microtime();//0.01797300 1528465346
echo microtime(true);1528465346.018

2.时间戳格式化

date()格式化一个本地时间/日期
gmdate()格式化一个GMT/UTC日期/时间(和date()函数完全一样,只除了返回时间是格林威治标准时GMT)
echo date('Y-m-d H:i:s') . '<br />';//2018-06-08 21:46:55
echo date("Y-m-d H:i",1528460160);//2018-06-08 20:16
echo gmdate('Y-m-d H:i:s') . '<br/>';//2018-06-08 13:46:55

3.解析检测日期

mktime([时[,分[,秒[月,[日,[,年]]]]]])//取得一个日期的Unix时间戳,如果参数为空取本地日期和时间的当前值
注意:参数从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值.
strtotime()将任何英文文本的日期时间描述解析为Unix时间戳
checkdate(月,日,年)检查一个日期是否合法

echo mktime(21,50,20,3,2,1986);//510155420 注意该函数虽然参数可省略,但不写参数建议使用time()
echo strtotime("now");//输出现在的时间戳1528466403
echo strtotime("+1 day");//加1天也就是明天1528552878
echo strtotime(2018-08-2);//得到2018年8月2日现在的时间戳1528460160
var_dump(checkdate(12,31,2000));//检查2000年12月31日是否合法true

祥哥整理了一常见常用的

//(1)打印明天此时的时间戳
echo strtotime("+1 day");
//(2)打印昨天此时的时间戳
echo strtotime("-1 day");
//(3)打印下个星期此时的时间戳
echo strtotime("+1 week");
//(4)打印上个星期此时的时间戳
echo strtotime("-1 week");
//(5)打印指定下星期几的PHP时间戳
echo strtotime("next Thursday");
//(6)打印指定上星期几的时间戳
echo strtotime("last Thursday");

/*

时间转换函数
分别输出刚刚,分钟前,小时前,今天,昨天等函数

*/
function transTime($ustime) {
    $ytime = date("Y-m-d H:i",$ustime);
    $rtime = date("n月j日 H:i",$ustime);
    $htime = date("H:i",$ustime);
    $time = time() - $ustime;
    $todaytime = strtotime("today");
    $time1 = time() - $todaytime;
    if($time < 60){
    $str = '刚刚';
    }else if($time < 60 * 60){
    $min = floor($time/60);
    $str = $min.'分钟前';
    }else if($time < $time1){
    $str = '今天'.$htime;
    }else{
    $str = $rtime;
    }
    return $str;
}
$str = time();
echo transTime($str);

.以日期形式输出

echo "今天:".date("Y-m-d");
echo "昨天:".date("Y-m-d",strtotime("-1 day"));
echo "明天:".date("Y-m-d",strtotime("+1 day"));
echo "一周后:".date("Y-m-d",strtotime("+1 week"));
echo "一周零两天四小时两秒后:".date("Y-m-d G:H:s",strtotime("+1 week 2 days 4 hours 2 seconds"));
echo "下个星期四:".date("Y-m-d",strtotime("next Thursday"));
echo "上个周一:".date("Y-m-d",strtotime("last Monday"));
echo "一个月前:".date("Y-m-d",strtotime("last month"));
echo "一个月后:".date("Y-m-d",strtotime("+1 month"));
echo "十年后:".date("Y-m-d",strtotime("+10 year"));
//当月的天数,某月的天数
$month_days = date('t');
$month_days2 = date('t',strtotime('2017-2-6'));
echo $month_days.'---'.$month_days2;
echo "<br />";
 
 
//这个月的第一天的日期,这个月的最后一天的日期
$now_month_first_date = date('Y-m-1');
$now_month_last_date  = date('Y-m-d',strtotime(date('Y-m-1',strtotime('next month')).'-1 day'));
echo '当月第一天日期'.$now_month_first_date.'当月最后一天的日期'.$now_month_last_date;
echo "<br />";
 
 
//上个月第一天的日期格式,上个月最后一天的日期格式
$last_mont_first_date = date('Y-m-1',strtotime('last month'));
$last_mont_end_date = date('Y-m-d',strtotime(date('Y-m-1').'-1 day'));
echo '上个月第一天的日期格式'.$last_mont_first_date.'上个月最后一天的日期格式'.$last_mont_end_date;
echo "<br />";
 
 
//下个月的第一天时间日期 ,下个月的最后一天时间日期
$next_mont_first_date = date('Y-m-1',strtotime('next month'));
$next_mont_end_date = date('Y-m-d',strtotime(date('Y-m-1',strtotime('next month')).'+1 month -1 day'));
echo '下个月的第一天时间日期'.$next_mont_first_date.'下个月的最后一天时间日期'.$next_mont_end_date;
echo "<br />";
 
 
//今日开始-结束时间戳
$start_time = strtotime(date('Y-m-d 00:00:00',time()));
$end_time   = ($start_time+86400);
        
//本周开始-结束时间戳
$start_time = mktime(0, 0 , 0,date("m"),date("d")-date("w")+1,date("Y"));
$end_time   = mktime(23,59,60,date("m"),date("d")-date("w")+7,date("Y"));
        
//本月开始-结束时间戳
$start_time = strtotime(date('Y-m-1').'-1 day')+24*60*60;
$end_time   = strtotime(date('Y-m-1 00:00:00',strtotime('next month')));
       
//本年开始时间-结束时间戳
$start_time = strtotime(date('Y-1-1 00:00:00',time()));
$end_time   = strtotime(date('Y-1-1 00:00:00',strtotime('+1 year')));


Top