• php 根据周数获取当周的开始日期与最后日期


    /**
         * 根据第几周获取当周的开始日期与最后日期
         * @param int $year 年份 $weeks = get_week($year)
         * @param 如获取第18周的开始日期$weeks[18][0]
         * @param 如获取第18周的最后日期$weeks[18][1]
        */
        static  public function get_week($year) {
            $year_start = $year . "-01-01";
            $year_end = $year . "-12-31";
            $startday = strtotime($year_start);
            if (intval(date('N', $startday)) != '1') {
                $startday = strtotime("next monday", strtotime($year_start)); //获取年第一周的日期
            }
            $year_mondy = date("Y-m-d", $startday); //获取年第一周的日期
    
            $endday = strtotime($year_end);
            if (intval(date('W', $endday)) == '7') {
                $endday = strtotime("last sunday", strtotime($year_end));
            }
    
            $num = intval(date('W', $endday));
            for ($i = 1; $i <= $num; $i++) {
                $j = $i -1;
                $start_date = date("Y-m-d", strtotime("$year_mondy $j week "));
    
                $end_day = date("Y-m-d", strtotime("$start_date +6 day"));
    
                $week_array[$i] = array (
                    str_replace("-",
                    "",
                    $start_date
                ), str_replace("-", "", $end_day));
            }
            return $week_array;
        }
    

      以上的第一种方法在 2018-2019会发生错误 转载于:https://www.cnblogs.com/anns/p/5549695.html

      //根据第几周获取当周的开始日期与最后日期
      function getWeekDate($year,$weeknum){  
        $firstdayofyear=mktime(0,0,0,1,1,$year);  
        $firstweekday=date('N',$firstdayofyear);  
        $firstweenum=date('W',$firstdayofyear);  
        if($firstweenum==1){  
            $day=(1-($firstweekday-1))+7*($weeknum-1);  
            $startdate=date('Y-m-d',mktime(0,0,0,1,$day,$year));  
            $enddate=date('Y-m-d',mktime(0,0,0,1,$day+6,$year));  
        }else{  
            $day=(9-$firstweekday)+7*($weeknum-1);  
            $startdate=date('Y-m-d',mktime(0,0,0,1,$day,$year));  
            $enddate=date('Y-m-d',mktime(0,0,0,1,$day+6,$year));  
        }  
          
        return array($startdate,$enddate);      
      } 
    

      这个是正确的

    转载于:http://renzhen.iteye.com/blog/939862

  • 相关阅读:
    [LeetCode]N-Queens
    [LeetCode]Anagrams
    [LeetCode]Permutations II
    [LeetCode]Permutations
    [STL]heap和priority_queue
    [STL]deque和stack、queue
    10、小易记单词--2017网易春招
    29、剑指offer--最小的K个数
    28、剑指offer--数组中出现次数超过一半的数字
    9、涂棋盘--2017网易春招
  • 原文地址:https://www.cnblogs.com/leilei-1/p/8028183.html
Copyright © 2020-2023  润新知