PHP日期处理函数,特别是本周、上一月(或者说是获取一个月内的初始和结束时间点等问题),在数据统计方面经常用到
//今天
$today = date("Y-m-d");
//昨天
$yesterday = date("Y-m-d", strtotime(date("Y-m-d"))-86400);
//上周
$lastweek_start = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1-7,date("Y")));
$lastweek_end = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7-7,date("Y")));
//本周
$thisweek_start = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),date("d")-date("w")+1,date("Y")));
$thisweek_end = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("d")-date("w")+7,date("Y")));
//上月
$lastmonth_start = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m")-1,1,date("Y")));
$lastmonth_end = date("Y-m-d H:i:s",mktime(23,59,59,date("m") ,0,date("Y")));
//本月
$thismonth_start = date("Y-m-d H:i:s",mktime(0, 0 , 0,date("m"),1,date("Y")));
$thismonth_end = date("Y-m-d H:i:s",mktime(23,59,59,date("m"),date("t"),date("Y")));
//本季度未最后一月天数
$getMonthDays = date("t",mktime(0, 0 , 0,date('n')+(date('n')-1)%3,1,date("Y")));
//本季度/
$thisquarter_start = date('Y-m-d H:i:s', mktime(0, 0, 0,date('n')-(date('n')-1)%3,1,date('Y')));
$thisquarter_end = date('Y-m-d H:i:s', mktime(23,59,59,date('n')+(date('n')-1)%3,$getMonthDays,date('Y')));
//2016-08-10这天 2个月后的日期
echo date("Y-m-d",strtotime("+2 month",strtotime("2016-08-10")));
//当前 3个月后的日期
echo date("Y-m-d",strtotime("+3 month",time()));
将常用的时间结点数据封装成函数,方便调用:
function time_slot(){
$time['today']['begin'] = mktime(0,0,0,date('m'),date('d'),date('Y'));
$time['today']['end'] = mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;
$time['tomorrow']['begin'] = mktime(0,0,0,date('m'),date('d')-1,date('Y'));
$time['tomorrow']['end'] = mktime(0,0,0,date('m'),date('d'),date('Y'))-1;
$time['week']['begin'] = mktime(0, 0 , 0,date("m"),date("d")-date("w")+1,date("Y"));
$time['week']['end'] = mktime(23,59,59,date("m"),date("d")-date("w")+7,date("Y"));
$time['lastweek']['begin'] = mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y'));
$time['lastweek']['end'] = mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));
$time['month']['begin'] = mktime(0,0,0,date('m'),1,date('Y'));
$time['month']['end'] = mktime(23,59,59,date('m'),date('t'),date('Y'));
$time['lastmonth']['begin'] = mktime(0, 0 , 0,date("m")-1,1,date("Y"));
$time['lastmonth']['end'] = mktime(23,59,59,date("m") ,0,date("Y"));
//返回时间段
return $time;
}
php 计算本月的开始时间 和结束时间 以及当月有多少天
$y = date("Y", time()); //年
$m = date("m", time()); //月
$d = date("d", time()); //日
$t0 = date('t'); // 本月一共有几天
$start_month = mktime(0, 0, 0, $m, 1, $y); // 创建本月开始时间
$end_month = mktime(23, 59, 59, $m, $t0, $y); // 创建本月结束
利用本月开始时间和本月结束时间结点,就可以统计出本月相关数据