/** * 根据第几周获取当周的开始日期与最后日期 * @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