zoukankan      html  css  js  c++  java
  • 获取最近7天,7周,7月

    /**
     * 获取最近七天
     * @param string $date
     * @param string $format
     * @return array
     */
    public static function getSevenDay($date = '', $format = 'Y-m-d')
    {
        $time = $date ? strtotime($date) : time();
        //组合数据
        $out_data = [];
        for ($i = 1; $i <= 7; $i++) {
            $out_data[$i - 1] = date($format, strtotime('+' . $i - 7 . ' days', $time));
        }
        return $out_data;
    }
    
    
    
    /**
     * 获取最近七月的日期,大于等于1
     * @param string $date
     * @return array
     */
    public static function getLastSevenMonth($date = '') {
        $result = [];
        $month = $date ? date('m',strtotime($date)) : date('m');
        $year = $date ? date('Y',strtotime($date)) : date('Y');
        for($i=0;$i<7;$i++){
            if ($month >= 1) {
                $result[$i] = self::getMonthDate($month,$year);
            }
            $month--;
        }
        $result = array_reverse($result);
        return $result;
    }
    
    /**
     * 获取某个月的开始日期,结束日期
     * @param string $month
     * @param string $year
     * @return array
     */
    public static function getMonthDate($month = '',$year = '') {
        $month = $month ? : date('m');
        $year = $year ? : date('Y');
        $begin_date = date('Y-m-01', strtotime($year.'-'.$month));
        $end_date = date('Y-m-d', strtotime("$begin_date +1 month -1 day"));
        $out_data['month'] = (int)$month;
        $out_data['begin_date'] = $begin_date;
        $out_data['end_date'] = $end_date;
        $out_data['begin_simple'] = self::simpleDate($out_data['begin_date']);
        $out_data['end_simple'] = self::simpleDate($out_data['end_date']);
        return $out_data;
    }
    
    
    /**
     * 获取最近七周的日期,大于等于1
     * @param $date
     * @return array
     */
    public static function getLastSevenWeek($date = '') {
        $result = [];
        $week = self::getWeeks($date);
        $year = $date ? date('Y',strtotime($date)) : date('Y');
        for($i=0;$i<7;$i++){
            if ($week >= 1) {
                $result[$i] = self::getWeekDate($week,$year);
            }
            $week--;
        }
        $result = array_reverse($result);
        return $result;
    }
    
    /**
     * 获取周的日期范围
     * @param string $week
     * @param string $year
     * @return array
     */
    public static function getWeekDate($week = '',$year = '') {
        /**
         * 2007年 第一周 是 01-01 到 01 - 07 因为第一天就是星期一 6
         * 2008年 第一周 是 01-01 到 01 - 06 因为第一天就是星期二 5 (闰年多一天)
         * 2009年 第一周 是 01-01 到 01 - 04 因为第一天就是星期四 3
         * 2010年 第一周 是 01-01 到 01 - 03 因为第一天就是星期五 2
         * 2011年 第一周 是 01-01 到 01 - 02 因为第一天就是星期六 1
         * 2012年 第一周 是 01-01 到 01 - 01 因为第一天就是星期天 0
         *
         * 2019年 第一周 是 01-01 到 01 - 06 因为第一天就是星期二 5
         */
        $year = $year ? : date('Y');
        // 获取第一天
        $first_date = $year.'-01-01';
        // 获取第一天是周几
        $week_num = array(7, 1, 2, 3, 4, 5, 6);
        $first_date_week = $week_num[date('w',strtotime($first_date))];
        $first_week_end_day  =1 + (7 - $first_date_week);
        $out_data = [];
        if ($week === 1) {
            $out_data['begin_date'] = $first_date;
            $out_data['end_date']   = date('Y-m-d',strtotime('+'.($first_week_end_day - 1).' day',strtotime($first_date)));
        } else {
            $week_begin_day = $first_week_end_day + ($week - 2) * 7 + 1;
            $week_end_day = $week_begin_day + 6;
            $out_data['begin_date'] = date('Y-m-d',strtotime('+'.($week_begin_day - 1).' day',strtotime($first_date)));
            $out_data['end_date']   = date('Y-m-d',strtotime('+'.($week_end_day - 1).' day',strtotime($first_date)));
        }
        $out_data['week'] = $week;
        $out_data['begin_simple'] = self::simpleDate($out_data['begin_date']);
        $out_data['end_simple'] = self::simpleDate($out_data['end_date']);
        return $out_data;
    }
    
    /**
     * 获取日期是一年中的第几周
     * @param string $date
     * @return float
     */
    public static function getWeeks($date = '') {
        /**
         * 2007年 第一周 是 01-01 到 01 - 07 因为第一天就是星期一 6
         * 2008年 第一周 是 01-01 到 01 - 06 因为第一天就是星期二 5 (闰年多一天)
         * 2009年 第一周 是 01-01 到 01 - 04 因为第一天就是星期四 3
         * 2010年 第一周 是 01-01 到 01 - 03 因为第一天就是星期五 2
         * 2011年 第一周 是 01-01 到 01 - 02 因为第一天就是星期六 1
         * 2012年 第一周 是 01-01 到 01 - 01 因为第一天就是星期天 0
         */
    
        $now_date = $date ? : date('Y-m-d');
        // 获取第一天
        $first_date = date('Y',strtotime($now_date)).'-01-01';
        // 获取第一天是周几
        $week_num = array(7, 1, 2, 3, 4, 5, 6);
        $first_date_week = $week_num[date('w',strtotime($first_date))];
    
        $diff_times = strtotime($now_date) - strtotime($first_date);
        $diff_days = MathUtil::div($diff_times , 86400,0) + 1;
        return ceil(($diff_days + $first_date_week - 1) / 7);
    }
    
  • 相关阅读:
    Python魔法函数
    Python变量的本质与intern机制
    Python中IO概述
    自用官方文档索引(日常更新)
    关于 mysql json类型参数的查询过滤
    由于升级iOS版本导致证书丢失等一系列问题汇总
    Android系统获取手机型号和系统版本号,以及其他配置信息
    Android Debug证书过期的最佳解决方案
    关于编写高德导航Demo的手记(一)
    iOS6.0以上版本,关于NSDateFormatter的问题
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/11327691.html
Copyright © 2011-2022 走看看