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;
                }
            }
  • 相关阅读:
    关于C++中如何判断文件,目录存在的若干方法
    AStyle2.02在VS2008下的使用
    opencv与wxwidgets冲突(第三方库jpeg,tiff,png,zlib所引起)
    C和C++获取文件大小的方法总结
    跨平台项目组织2
    md5函数C语言实现
    分享本人自编的一个跨平台项目:伙食管理小软件
    win7 vs2008 release mt.exe停止工作
    跨平台项目组织
    SQL注入语句 (很全)
  • 原文地址:https://www.cnblogs.com/rxbook/p/10937768.html
Copyright © 2011-2022 走看看