zoukankan      html  css  js  c++  java
  • PHP获取上周一和上个月

    PHP获取上周一有个坑,如果今天是周一,获取的是上周一。如果今天是周二到周日,获取的是本周一。

    根据传递的页码数和每页显示多少条,获取对应的数据:

         if ($data['type'] == 'day') {
                $unit = 'day';
            } else if ($data['type'] == 'week') {
                $unit = 'monday';
            } else if ($data['type'] == 'month') {
                $unit = 'month';
            }
    
            $time = time();
            $today = date("Y-m-d", $time);
            $end_offset = ($data['page'] - 1) * $data['size'] + 1;
            $start_offset = $end_offset + $data['size'] - 1;
    
            $start_timestamp = strtotime("{$today} -{$start_offset} $unit");
            $end_timestamp = strtotime("{$today} -{$end_offset} $unit");
            if ($data['type'] == 'week') {
                $end_timestamp += 86400 * 7 - 1;
                if (date("w", $time) != 1) {
                    $start_timestamp -= 86400 * 7;
                    $end_timestamp -= 86400 * 7;
                }
            } else if ($data['type'] == 'month') {
                $start_timestamp = strtotime(date("Y-m-01 00:00:00", $start_timestamp));
                $end_timestamp = strtotime(date("Y-m-t 23:59:59", $end_timestamp));
            }
         $flag = true;
            $stamp = strtotime(date("Y-m-d 00:00:00", $end_timestamp));
            while ($flag) {
                if (isset($array_map[$stamp]) && !empty($array_map[$stamp])) {
                    $result[] = $array_map[$stamp];
                } else {
                    $default['stamps'] = $stamp;
                    $default['date'] = date("Ymd", $stamp);
                    $result[] = $default;
                }
    
                if ($data['type'] == 'day') {
                    $stamp -= 86400;
                } else if ($data['type'] == 'week') {
                    $stamp -= 86400 * 7;
                } else if ($data['type'] == 'month') {
                    //$stamp对应的月份的1号,往前1天就是上个月的最后一天
                    $date = date("Y-m-01", $stamp);
                    $stamp = strtotime("{$date} -1 day");
                }
    
                if ($stamp < $start_timestamp) {
                    $flag = false;
                }
            }
  • 相关阅读:
    (005)Linux 复制命令cp总提示是否覆盖的解决方法,在cp前加
    (030)Spring Boot之RestTemplate访问web服务案例
    Gym
    Gym
    Gym.102006:Syrian Collegiate Programming Contest(寒假自训第11场)
    BZOJ-5244 最大真因数(min25筛)
    HDU
    HDU 1272 小希的迷宫(并查集)
    HDU 3038 How Many Answers Are Wrong(带权并查集)
    POJ 1182 食物链(带权并查集)
  • 原文地址:https://www.cnblogs.com/rxbook/p/10937768.html
Copyright © 2011-2022 走看看