PHP计算一年多少个星期和每周的开始和结束日期


Posted in PHP onJuly 01, 2014

项目中需要做个提交周报的功能,需要知道指定周数的开始日期和结束日期,以便处理其他业务。以下是一段通过PHP来获取一年中的每星期的开始日期和结束日期的代码,与大家分享。

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; 

}

函数get_week()通过传入参数$year年份,获取当年第一天和最后一天所在的周数,计算第一周的日期,通过循环获取每一周的第一天和最后一天的日期。最后返回是一个数组。
想得到指定周数的开始日期和结束日期,比如2011年第18周的开始日期和结束日期,代码如下:

$weeks = get_week(2011); 

echo '第18周开始日期:'.$weeks[18][0].''; 

echo '第18周结束日期:'.$weeks[18][1];

最后输出结果:
 
第18周开始日期:2011.05.02
第18周结束日期:2011.05.08

PHP 相关文章推荐
ThinkPHP采用模块和操作分析
Apr 18 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
Aug 07 PHP
PHP验证码函数代码(简单实用)
Sep 29 PHP
php程序员应具有的7种能力小结
Nov 27 PHP
php实现比较两个文件夹异同的方法
Jun 18 PHP
php基于闭包实现函数的自调用(递归)实例分析
Nov 11 PHP
PHP中仿制 ecshop验证码实例
Jan 06 PHP
bindParam和bindValue的区别以及在Yii2中的使用详解
Mar 12 PHP
Laravel 简单实现Ajax滚动加载示例
Oct 22 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
Feb 11 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
Apr 04 PHP
Yii 实现数据加密和解密
Mar 09 PHP
PHPMailer发送HTML内容、带附件的邮件实例
Jul 01 #PHP
PHP远程采集图片详细教程
Jul 01 #PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
Jul 01 #PHP
PHP和javascript常用正则表达式及用法实例
Jul 01 #PHP
PHP生成二维码的两个方法和实例
Jul 01 #PHP
PHP中使用TCPDF生成PDF文档实例
Jul 01 #PHP
PHP中使用CURL模拟登录并获取数据实例
Jul 01 #PHP
You might like
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
2012/04/09 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
任意位置显示html菜单
2007/02/01 Javascript
提高网站信任度的技巧
2008/10/17 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
js调试系列 控制台命令行API使用方法
2014/06/18 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
小程序转发探索示例
2019/02/19 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
python实现神经网络感知器算法
2017/12/20 Python
tensorflow构建BP神经网络的方法
2018/03/12 Python
Python爬虫之正则表达式基本用法实例分析
2018/08/08 Python
使用tensorflow实现线性svm
2018/09/07 Python
python实现图书借阅系统
2019/02/20 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
在python中画正态分布图像的实例
2019/07/08 Python
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
领导的自我鉴定
2013/12/28 职场文书
小学英语教学反思案例
2014/02/04 职场文书
环境建设实施方案
2014/03/14 职场文书
建筑工地质量标语
2014/06/12 职场文书
交通志愿者活动总结
2014/06/27 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
用电申请报告范文
2015/05/18 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书
幼儿园班级管理心得体会
2016/01/07 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
SpringBoot集成Redis的思路详解
2021/10/16 Redis
SpringBoot Http远程调用的方法
2022/08/14 Java/Android