李哲口个人博客李哲口个人博客

草根站长 - 老于
专注记录个人自学笔记及各种代码示例、分享资源、生活工作情感心得,喜欢探索新的技术、爱生活、爱coding。
文章36010浏览117650本站已运行229

PHP获取各时间段的常用方法

当我们在做数据统计时,使用最多的就是获取今天、昨天、近7天、近30天、本周、上周等时间段的时间戳,特此整理一篇文章PHP获取各时间段的常用方法供大家参考。

先介绍一个函数mktime,mktime的作用是,将时间转换为自1970年1月1日以来持续时间的秒数,发生错误时返回-1。

mktime(
    int $hour,
    int $minute = null,
    int $second = null,
    int $month = null,
    int $day = null,
    int $year = null
)

获取以下时间段开始及结束时间戳

今天

$startTime = mktime(0,0,0,date("m"),date("d"),date("Y"));
$endTime = mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;

明天

$startTime = mktime(0,0,0,date("m"),date("d")+1,date("Y"));
$endTime = mktime(0,0,0,date("m"),date("d")+2,date("Y"))-1;

昨天

$startTime = mktime(0,0,0,date("m"),date("d")-1,date("Y"));
$endTime = mktime(0,0,0,date("m"),date("d"),date("Y"))-1;

近7天

$startTime = mktime(0,0,0,date("m"),date("d")-6,date("Y"));
$endTime = mktime(0,0,0,date("m"),date("d")+1,date("Y"))-1;

本周

$startTime=mktime(0,0,0,date('m'),date('d')-date('w')+1,date('Y'));
$endTime=mktime(23,59,59,date('m'),date('d')-date('w')+7,date('Y'));

下周

$startTime=mktime(0,0,0,date('m'),date('d')-date('w')+1+7,date('Y'));
$endTime=mktime(23,59,59,date('m'),date('d')-date('w')+7+7,date('Y'));

上周

$startTime=mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y'));
$endTime=mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));

近30天

$startTime = mktime(0,0,0,date("m"),date("d")-29,date("Y"));
$endTime = mktime(0,0,0,date("m"),date("d")+1,date("Y"))-1;

本月

$startTime = mktime(0,0,0,date("m"),1,date("Y"));
$endTime = mktime(23,59,59,date('m'),date('t'),date('Y'));

上月

$startTime = mktime(0,0,0,date("m")-1,1,date("Y"));
$endTime = mktime(0,0,0,date("m"),1,date("Y"))-1;

本季度

// 本季度未最后一月天数
$getMonthDays = date("t",mktime(0, 0 , 0,date('n')+(date('n')-1)%3,1,date("Y")));
// 本季度开始时间
echo date('Y-m-d H:i:s', mktime(0, 0, 0,date('n')-(date('n')-1)%3,1,date('Y'))),"\n"; 
// 本季度结束时间
echo date('Y-m-d H:i:s', mktime(23,59,59,date('n')+(date('n')-1)%3,$getMonthDays,date('Y'))),"\n";
/-------------------------------------------/
// 当月是第几季度
$season = ceil((date('n'))/3);
//本季度开始时间
echo date('Y-m-d H:i:s', mktime(0, 0, 0,$season*3-3+1,1,date('Y'))),"\n";
// 本季度结束时间
echo date('Y-m-d H:i:s', mktime(23,59,59,$season*3,date('t',mktime(0, 0 , 0,$season*3,1,date("Y"))),date('Y'))),"\n";
// 上个月是第几季度
$season = ceil((date('n'))/3)-1;
// 上季度开始时间
echo date('Y-m-d H:i:s', mktime(0, 0, 0,$season*3-3+1,1,date('Y'))),"\n";
// 上季度结束时间
echo date('Y-m-d H:i:s', mktime(23,59,59,$season*3,date('t',mktime(0, 0 , 0,$season*3,1,date("Y"))),date('Y'))),"\n";

今年

$startTime = mktime(00,00,00,01,01,date('Y'));
$endTime = mktime(23,59,59,12,31,date('Y'));

去年

$startTime = mktime(00,00,00,01,01,date('Y')-1);
$endTime = mktime(23,59,59,12,31,date('Y')-1);

明年

$startTime = mktime(00,00,00,01,01,date('Y')+1);
$endTime = mktime(23,59,59,12,31,date('Y')+1);

如果您有什么疑问的地方,欢迎咨询本站站长。

赞一下
李哲口个人博客
上一篇: ThinkPHP3和ThinkPHP5的区别(一)新增模块
下一篇: PHP使用百度翻译API接口将中文翻译成英文
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏