代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
PHP
】
根据给定的日期格式'YYYY-mm-dd',获取该日期所在周的
作者:
/ 发布于
2013/8/20
/
620
根据给定的日期格式'YYYY-mm-dd',获取该日期所在周的起始日期
/** * 获取一年中所有星期的起始日期 * @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 '日期格式出错'; } */
试试其它关键字
同语言下
.
用net匹配并替换iOS标准的emoji表情符号
.
处理带Emoji表情的的字符串
.
获取微信昵称时 过滤特殊字符
.
通过判断上传文件的头字符来判断文件的类型
.
模拟百度URL加密解密算法
.
以太坊检查地址是否合法
.
实现crontab解析类
.
获取每个月的开始和结束时间
.
图片上传工具类
.
APP手机应用信息采集
可能有用的
.
用net匹配并替换iOS标准的emoji表情符号
.
处理带Emoji表情的的字符串
.
获取微信昵称时 过滤特殊字符
.
通过判断上传文件的头字符来判断文件的类型
.
模拟百度URL加密解密算法
.
以太坊检查地址是否合法
.
实现crontab解析类
.
获取每个月的开始和结束时间
.
图片上传工具类
.
APP手机应用信息采集
贡献的其它代码
Label
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3