PHP计算每月几周,每周的开始结束日期
PHP计算每月几周,每周的开始结束日期
因为项目中需要一个每周工作计算的功能,具体日期的算法是,把每月拆分成几个周,最后一个星期这个月份的天数不够就补上下个月的。
列如今天8月27星期一,这个月有31天,但是这个星期最后的一天是9月1号,所以要把9月1号加到8月份,然后9月的第一周就要重9月2号开始算,以此类推
下面就直接贴代码了
//计算某一年某个月有几周
function get_weekinfo($month)
{
$weekinfo = array();//创建一个空数组
$end_date = date('d',strtotime($month.' +1 month -1 day'));//计算当前月有多少天
for ($i=1; $i <$end_date ; $i=$i+7) { //循环本月有多少周
$w = date('N',strtotime($month.'-'.$i)); //计算第一天是周几
$weekinfo[] = array(date('Y-m-d',strtotime($month.'-'.$i.' -'.($w-1).' days')),date('Y-m-d',strtotime($month.'-'.$i.' +'.(7-$w).' days')));
} //当周开始时间 //结束时间
return $weekinfo;
}
这是从网上找的代码 ,但是对3月份不管用,所以我在原来的基础上做了一下改动
//展示
function generation( $token,$date )
{
$uesr = $this->usercache( $token ); $arr = [] ;
foreach ($this->get_weekinfo($date) as $k => $v)
{ //连接上个月的数据去掉
if( date("m",strtotime($v[0])) == date("m",strtotime($date)) )
{
$arr[] = $v;
}
} //月份的最后一天
$lastday = date('Y-m-d', mktime(23, 59, 59, date('m', strtotime($date))+1, 00)); $lastweek = end($arr); //不够下个月的数据补上
if( strtotime($lastday) > strtotime($lastweek[1]) )
{
$newendarr = array( date( 'Y-m-d',strtotime($lastweek[1])+86400 ),date( 'Y-m-d',strtotime($lastweek[1])+(86400*7) ) );
array_push($arr, $newendarr);
} try{ //数据插入
foreach ($arr as $ke => $va)
{ $data['week'] = $ke+1; //第几周
$data['uid'] = $uesr['uid']; //用户ID
$data['year'] = date('Y',strtotime($date)); //年
$data['month'] = date('m',strtotime($date));//月 //每个星期的开始-结束数据填充
$i = strtotime($va[0]);
while ( $i <= strtotime($va[1]) ) {
$data['date'] = date('Y-m-d',$i); //年月日
$data['day'] = $this->getTimeWeek( $i );//星期几 //添加
$this->insertData( $data );
$i = $i+86400;
}
}
return true;
} catch (\Exception $e) {
return false;
}
}
//获取星期参数
function getTimeWeek($time)
{
$day = date("w",$time);
return ($day == 0) ? '7' : $day ;
}
原理挺简单的,判断一个月的数据够不够 ,不够就补上数据 ,用起来也简单 , 直接输入 年月就好了, 如:2018-03
PHP计算每月几周,每周的开始结束日期的更多相关文章
- PHP获取一年有多少周和每周开始和结束日期
/*PHP获取当前日期是第几周和本周开始日期和本周结束日期*/ //$now = '2018-11-13';周二 public function getNowTimeInfo($now) { $str ...
- mysql 某周的起始和结束日期
转自:http://bbs.csdn.net/topics/370096126 t_table有数据如下:year Week2011 22011 32011 42011 ...
- PHP计算一年有多少周,每周开始日期和结束日期
一年有多个周,每周的开始日期和结束日期 参考代码一:[正在使用的版本] <?php header("Content-type:text/html;charset=utf-8" ...
- PHP获取一年有几周以及每周开始日期和结束日期
最近接了一个项目,其中有一需求是用php获取一年有几周以及每周开始日期和接触日期.在网上找些资料没有合适的,于是自己做了一份,下面通过两种方式实现PHP获取一年有几周以及每周开始日期和结束日期 代码一 ...
- php 计算出一年中每周的周一日期
最近接到一个任务,归纳起来,就是:要算出每年当中,每周的周一日期.想了一会,看了下date函数,深入了解了一下date函数各个参数的含义之后,终于把这道题做出来了! 在date()函数中,有一个参数对 ...
- PHP获取某年第几周的开始日期和结束日期
http://blog.csdn.net/qq_27080247/article/details/50835956 /** * 获取某年第几周的开始日期和结束日期 * @param int $year ...
- php获取一年中某一周的开始和结束时间
PHP来获取一年中的每星期的开始日期和结束日期的代码 函数get_week()通过传入参数$year年份,获取当年第一天和最后一天所在的周数,计算第一周的日期,通过循环获取每一周的第一天和最后一天的日 ...
- PHP 获取某年第几周的开始日期和结束日期的实例
/** * 获取某年第几周的开始日期和结束日期 * @param int $year * @param int $week 第几周; */ public function weekday($year, ...
- PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
本文实例讲述了PHP获取日期对应星期.一周日期.星期开始与结束日期的方法.分享给大家供大家参考,具体如下: /* * 获取日期对应的星期 * 参数$date为输入的日期数据,格式如:2018-6-22 ...
随机推荐
- 怎么查看mysql 的binlog日志存放的位置
image.png 这个你可以看配置文件 启用了才有这样的记录默认是没有的 linux系统中的/etc/my.cnf my.cnf内容: log-bin = mysqlbin # 默认配置 一般放在/ ...
- CSS3 Box-shadow 阴影效果用法
一.基本用法: 二.内阴影用法: 三.阴影扩展长度值: box-shadow: 4rpx 4rpx 8rpx #aaa;
- jq制作tab栏
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- SQL 常见出现错误(附件、保存表、脱机、自增序列号 )
一.问题如图所示: 当填了某些数据,按“保存”时出现这个问题怎么解决? 1.打开“工具”-“选项”-“Designers” , 2.选择如下去勾: 二.当附加数据库的时候出现如下错误: 在附件文件上选 ...
- 【codeforces 764B】Timofey and cubes
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- UVA 1025 "A Spy in the Metro " (DAG上的动态规划?? or 背包问题??)
传送门 参考资料: [1]:算法竞赛入门经典:第九章 DAG上的动态规划 题意: Algorithm城市的地铁有 n 个站台,编号为 1~n,共有 M1+M2 辆列车驶过: 其中 M1 辆列车从 1 ...
- 看到两道小学数学题,实在是解不动,用js写了一下
把一个自然数的约数(除去它本身)按照从小到大的顺序写在它的左边,可以得到一个多位数,比如6的约数是1,2,3,写成一个多位数是1236,假如这个多位数中,没有直复数字,那么我们你这个多位数是唯一的.请 ...
- linux之旅首页
为什么有此系列文章 目录 为什么有此系列文章 一直使用windows,决定使用linux作为操作系统. 使用此系列文章来记录我使用linux过程中遇到的问题,和应对方式 目录 安装linux
- logisim自动生成电路
之前再做有关logisim有关的实验时,一直在傻乎乎地连线,而我是看了mooc有关的视频时,才知道logisim有自动连线的功能. 自动连线需要事先知道输入与输出的真值表或者全部的表达式,将其填入lo ...
- Vue学习笔记-目录结构
1.采用脚手架构建的项目基本目录结构 可能会有些许差别,但是大致基本目录都差不多 2.项目入口(index.html,main.js,App.vue) 一般情况下,我们都习惯性将 index.html ...