首页 > 编程语言 >PHP获取一些常用时间区间(本周、本月、本季度、今年,上周、上月、上季度、去年)

PHP获取一些常用时间区间(本周、本月、本季度、今年,上周、上月、上季度、去年)

时间:2024-09-21 15:47:03浏览次数:1  
标签:arr PHP last get datetime 本季度 获取 date now

/**
     * @notes: 获取快捷时间
     * @return array
     * @author: lavender
     * @time: 2024/7/23 15:36
     */
    public function getShortcutsTimeArea()
    {
        $arr      = [];
        $timezone = new \DateTimeZone('PRC');
        $datetime = new \DateTime();
        $datetime->setTimezone($timezone);
        $month  = get_now_date('n');
        $season = (int)($month / 3);
        if ($month % 3 > 0) {
            $season += 1;
        }
        // 本周
        $datetime->modify('Monday this week');
        $start_time1 = $datetime->format('Y-m-d');
        $datetime->modify('Sunday this week');
        $end_time1        = $datetime->format('Y-m-d');
        $arr['this_week'] = $start_time1 . ' ~ ' . $end_time1;
        // 本月
        $datetime->modify('first day of this month');
        $start_time2 = $datetime->format('Y-m-d');
        $datetime->modify('last day of this month');
        $end_time2         = $datetime->format('Y-m-d');
        $arr['this_month'] = $start_time2 . ' ~ ' . $end_time2;
        // 本季度
        if ($season === 1) {
            $arr['this_quarter'] = get_now_date('Y-01-01') . ' ~ ' . get_now_date('Y-03-31');
        } else if ($season === 2) {
            $arr['this_quarter'] = get_now_date('Y-04-01') . ' ~ ' . get_now_date('Y-06-30');
        } else if ($season === 3) {
            $arr['this_quarter'] = get_now_date('Y-07-01') . ' ~ ' . get_now_date('Y-09-30');
        } else {
            $arr['this_quarter'] = get_now_date('Y-10-01') . ' ~ ' . get_now_date('Y-12-31');
        }
        // 今年
        $datetime->modify('first day of january this year');
        $start_time4 = $datetime->format('Y-m-d');
        $datetime->modify('last day of december this year');
        $end_time4        = $datetime->format('Y-m-d');
        $arr['this_year'] = $start_time4 . ' ~ ' . $end_time4;
        // 上周
        $timezone = new \DateTimeZone('PRC');
        $datetime = new \DateTime();
        $datetime->setTimezone($timezone);
        $datetime->modify('Monday last week');
        $start_time5 = $datetime->format('Y-m-d');
        $datetime->modify('Sunday this week');
        $end_time5        = $datetime->format('Y-m-d');
        $arr['last_week'] = $start_time5 . ' ~ ' . $end_time5;
        // 上月
        $timezone = new \DateTimeZone('PRC');
        $datetime = new \DateTime();
        $datetime->setTimezone($timezone);
        $datetime->modify('first day of last month');
        $start_time6 = $datetime->format('Y-m-d');
        $datetime->modify('last day of this month');
        $end_time6         = $datetime->format('Y-m-d');
        $arr['last_month'] = $start_time6 . ' ~ ' . $end_time6;
        // 上季度
        if ($season === 1) {
            $year                = intval(get_now_date('Y')) - 1;
            $arr['last_quarter'] = $year . '-10-01' . ' ~ ' . $year . '-12-31';
        } else if ($season === 2) {
            $arr['last_quarter'] = get_now_date('Y-01-01') . ' ~ ' . get_now_date('Y-03-31');
        } else if ($season === 3) {
            $arr['last_quarter'] = get_now_date('Y-04-01') . ' ~ ' . get_now_date('Y-06-30');
        } else {
            $arr['last_quarter'] = get_now_date('Y-07-01') . ' ~ ' . get_now_date('Y-09-30');
        }
        // 去年
        $timezone = new \DateTimeZone('PRC');
        $datetime = new \DateTime();
        $datetime->setTimezone($timezone);
        $datetime->modify('first day of january last year');
        $start_time8 = $datetime->format('Y-m-d');
        $datetime->modify('last day of december this year');
        $end_time8        = $datetime->format('Y-m-d');
        $arr['last_year'] = $start_time8 . ' ~ ' . $end_time8;
        return $arr;
    }

  

标签:arr,PHP,last,get,datetime,本季度,获取,date,now
From: https://www.cnblogs.com/shemmor/p/18424102

相关文章

  • PHP根据经纬度获取两个地点之间的直线距离
    /***根据两点间的经纬度计算距离*@param$lat1纬度1*@param$lng1经度1*@param$lat2纬度2*@param$lng2经度2*@returnarray*/functionget_distance($lat1,$lng1,$lat2,$lng2):array{//赤道半径(单位m)$earthRadius=6378137;$l......
  • ghidra---配置获取加载pdb文件
    ghidra---配置获取加载pdb文件在不配置"SymbolServerConfig"的情况下,如果自己有pdb文件且和可执行程序在同一文件夹下,ghidra会自动加载相应pdb文件。分析Windows自身的可执行程序时,如果可以获取微软提供的符号文件,可以极大提高分析效率。打开一个可执行程序,界面操作Edit->......
  • PHP转换ip地址
    ip转换/***ip转换整型*@paramint|string|null$ipip地址*@returnint|string|null*/functionmy_ip2long($ip){$res=false;if(filter_var($ip,FILTER_VALIDATE_IP,FILTER_FLAG_IPV4)){$res=sprintf('%u',ip2long($ip));}......
  • PHP获取指定日期n天前后的日期列表
    /***获取指定日期n天前后的日期列表*@paramstring$date日期*@paramint$day_num天数*@paramstring$cate类型*@paramstring$format格式*@returnarray*/functionget_date_ab_list(string$date,int$day_num,string$cate='b',string$form......
  • PHP美化打印输出并结束程序执行
    话不多说,直接附上代码if(!function_exists('dd')){/***@notes:打印输出*@parammixed$vars*@returnvoid*@author:lavender*@time:2024/7/159:33*/functiondd(...$vars){/*ob_start();var_......
  • PHP抽奖算法
    一、初始化奖品id奖品的idpid奖品的自定义idtype奖品类型,1、虚拟奖品2、实物奖品3、礼包码待扩充name奖品名称total奖品总数chance获奖概率/抽奖基数10000daynum每日数量限制pay充值限制$prize=[['id'=>1,'pid'=>11,'type'=>1,'name'=>'典藏......
  • 获取支付链接转化为二维码
    链接转为二维码,需要安装vue-qrcodenpminstallvue-qrcode装二维码的容器:<divclass="amount"v-show="amount"><divclass="amount_text">金额:{{selected.price}}元</div><divclass="amount_img&......
  • 获取验证码倒计时
    一般项目中获取验证码时,设置等待时间60s,倒计时结束之后才能继续重新获取问题:一开始我只是给按钮设置了倒计时,以至于按钮是一次性的,只能获取一次,倒计时结束按钮恢复可点击状态,再点击之后按钮就不倒计时了...原因:是因为我在编写计时器的时候没清除之前的计时器,没考虑到:如果获取验......
  • Thinkphp8安装topthink/think-captcha验证码的和使用方法
    ThinkPHP8默认没有验证码,安装验证码可以使用composer来安装验证码一、安装验证码执行composer安装验证码composerrequiretopthink/think-captcha二、使用方法1、在目录app\middleware.php中开启session\think\middleware\SessionInit::class2、配置验证码安装好验证......
  • 痞子衡嵌入式:MCUBootUtility v6.3发布,支持获取与解析启动日志zi
    --痞子衡维护的NXP-MCUBootUtility工具距离上一个大版本(v5.3.0)发布过去一年了,期间痞子衡也做过三个版本更新,但不足以单独介绍。这一次痞子衡为大家带来了全新重要版本v6.3.x,这次更新主要是想和大家特别聊聊ROM启动日志这个特性的支持。一、v6.0-v6.3更新记录--v5.......