php代码
/** * 获取一年中所有星期的起始日期 * @param $year 格式 'YYYY' * 返回二维数组 下标 key1值对应一年中某一天所在周的实际年份 key2值对应一年中某一天所在的周数[一年中第几周] * 返回false 日期格式错误 */ function get_all_weeks($year){ $week_arr = array(); $year = intval(trim($year)); $preg = "/^\d{4,}$/"; if(!preg_match($preg, $year)){ return false; } $begin_day = $year . '-01-01'; $end_day = $year . '-12-31'; //一年第一个星期一 if(date('w',strtotime($begin_day))!=1){ $begin_day = date('Y-m-d',strtotime("next monday", strtotime($begin_day))); } //第一个星期一所在周数 $begin_week_num = intval(date('W',strtotime($begin_day))); //一年最后一个星期天 if(date('w',strtotime($end_day))!=0){ $end_day = date('Y-m-d',strtotime("last sunday",strtotime($end_day))); //存在跨年的星期,跨年所在周星期一 $end_day_next = date('Y-m-d',strtotime($end_day)+24*60*60); //跨年星期所属年份与所在周数 $stride_year = date('o',strtotime($end_day_next)); $stride_weeknum = intval(date('W',strtotime($end_day_next))); } //最后一个星期天所在周数 $end_week_num = intval(date('W',strtotime($end_day))); //一年第一个周一为一年的第一周或者第二周 if($begin_week_num!=1){ $i=2; }else{ $i=1; } $j = 0; for($i;$i<=$end_week_num;$i++){ $start_date = date("Y-m-d", strtotime("$begin_day $j week")); $end_day = date("Y-m-d", strtotime($start_date . '+6 day')); $week_arr[$year][$i] = array( $start_date, $end_day ); $j++; } if($end_day_next){ $week_arr[$stride_year][$stride_weeknum] = array( $end_day_next, date("Y-m-d", strtotime($end_day_next . '+6 day')) ); } return $week_arr; } //demo_调用 /* $year = '2013'; if(get_all_weeks($year)){ var_dump(get_all_weeks($year)); }else{ echo '日期格式出错'; } */ /** * 获取某一天所在周的起始日期 * 依赖 function get_all_weeks * @param $day 格式:'YYYY-mm-dd' * 返回false 日期格式错误 * 正确,返回json "{"begin_day":"YYYY-mm-dd","end_day":"YYYY-mm-dd"}" */ function get_day_week($day){ $date_arr = explode('-', trim($day)); if(!checkdate(intval($date_arr[1]), intval($date_arr[2]), intval($date_arr[0]))){ return false; } $year = date('Y',strtotime($day)); $weeks = get_all_weeks($year); //某一天所属的年份与周数 $real_year = date('o',strtotime($day)); $week_num = intval(date('W',strtotime($day))); if(!empty($weeks[$real_year][$week_num][0])) $begin_day = $weeks[$real_year][$week_num][0]; if(!empty($weeks[$real_year][$week_num][1])) $end_day = $weeks[$real_year][$week_num][1]; //跨年周数值存储于上一年中 if(empty($begin_day)||empty($end_day)){ $year = date('Y',strtotime($day))-1; $weeks = get_all_weeks($year); $real_year = date('o',strtotime($day)); $week_num = intval(date('W',strtotime($day))); if(!empty($weeks[$real_year][$week_num][0])) $begin_day = $weeks[$real_year][$week_num][0]; if(!empty($weeks[$real_year][$week_num][1])) $end_day = $weeks[$real_year][$week_num][1]; } $the_day = array( 'begin_day' => $begin_day, 'end_day' => $end_day ); $the_day = json_encode($the_day); return $the_day; } //demo_调用 /* $day = '2014-01-01'; if(get_day_week($day)){ var_dump(get_day_week($day)); }else{ echo '日期格式出错'; } */
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
刺客信条阴影:贝壳谜语解决方案
2 周前ByDDD
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

Atom编辑器mac版下载
最流行的的开源编辑器

Dreamweaver CS6
视觉化网页开发工具

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能