当前位置: 首页 > news >正文

PHP计算某时间段内有几个周及某时间为今年第几周函数

date_default_timezone_set('PRC');
function count_weeks($startDate, $endDate = ''){//开始时间$startDate = date('Y-m-d', $startDate);//结束时间if(empty($endDate)) {$endDate = date('Y-m-d');}else{$endDate = date('Y-m-d', $endDate);}//跨越天数$n = (strtotime($endDate)-strtotime($startDate))/86400;//判断,跨度小于7天,可能是同一周,也可能是两周$endDate = date("Y-m-d",strtotime("$endDate +1 day"));if($n<7){//查开始时间 在 那周 的 位置$day            = date("w",strtotime($startDate))-1;//查开始时间  那周 的 周一$week_start        = date("Y-m-d",strtotime("$startDate -{$day} day"));//查开始时间  那周 的 周末$day            = 7-$day;$week_end        = date("Y-m-d",strtotime("$startDate +{$day} day"));//判断周末时间是否大于时间段的结束时间,如果大于,那就是时间段在同一周,否则时间段跨两周if($week_end>=$endDate){        $weekList[] =array('s'=>$startDate, 'e'=>date("Y-m-d",strtotime("$endDate -1 day")));}else{$weekList[] =array('s'=>$startDate, 'e'=>date("Y-m-d",strtotime("$week_end -1 day")));        $weekList[] =array('s'=>$week_end, 'e'=>date("Y-m-d",strtotime("$endDate -1 day")));    }}else{//如果跨度大于等于7天,可能是刚好1周或跨2周或跨N周,先找出开始时间 在 那周 的 位置和那周的周末时间$day         = date("w",strtotime($startDate))-1;$week_start  = date("Y-m-d",strtotime("$startDate -{$day} day"));$day         = 7-$day;$week_end    = date("Y-m-d",strtotime("$startDate +{$day} day"));//先把开始时间那周写入数组$weekList[]  =array('s'=>$startDate, 'e'=>date("Y-m-d",strtotime("$week_end -1 day"))); //判断周末是否大于等于结束时间,不管大于(2周)还是等于(1周),结束时间都是时间段的结束时间。if($week_end >= $endDate){$weekList[] = array('s'=>$week_end, 'e'=>date("Y-m-d",strtotime("$endDate -1 day")));}else{//N周的情况用while循环一下,然后写入数组while($week_end <= $endDate){$start         = $week_end;$week_end    = date("Y-m-d",strtotime("$week_end +7 day"));if($week_end <= $endDate){$weekList[]  = array('s'=>$start, 'e'=>date("Y-m-d",strtotime("$week_end -1 day")));}else{$weekList[]  = array('s'=>$start, 'e'=>date("Y-m-d",strtotime("$endDate -1 day")));}}}}return $weekList;
}
http://www.lryc.cn/news/271860.html

相关文章:

  • 华为无线AC内三层漫游配置详解
  • GPT-5、开源、更强的ChatGPT!OpenAI公布2024年计划
  • java idea中做一个简易的图书管理系统(控制台输入输出,无数据库)
  • C# PrinterSettings修改打印机纸张类型,paperType
  • TV端Web页面性能优化实践
  • 2023年终总结
  • 深入探索MongoDB集群模式:从高可用复制集
  • gem5学习(8):创建一个简单的缓存对象--Creating a simple cache object
  • 【PTA-C语言】实验七-函数与指针I
  • C# 让数据保留小数后两位,不足的补充0
  • RK3568驱动指南|第九篇 设备模型-第92章 引用计数器实验
  • 苹果电脑Dock栏优化软件 mac功能亮点
  • 【UE5蓝图】读取本地json文件修改窗口大小
  • ACM32F403/F433 12 位多通道国产芯片,支持 MPU 存储保护功能,应用于工业控制,智能家居等产品中
  • 2024最新前端React面试题:JSX是什么,它和JS有什么区别
  • 3d导入模型怎样显示原本材质---模大狮模型网
  • web前端开发网页制作html/css结课作业
  • 工业相机如何实现实时和本地Raw格式图像和Bitmap格式图像的保存和相互转换(C#代码,UI界面版)
  • C++初阶------------------入门C++
  • 深度学习核心技术与实践之自然语言处理篇
  • AI-ChatGPTCopilot
  • 网络安全-真实ip获取伪造与隐藏挖掘
  • CMake入门教程【核心篇】添加子目录(add_subdirectory)
  • Prototype原型模式(对象创建)
  • [Redis实战]分布式锁
  • SpingBoot的项目实战--模拟电商【2.登录】
  • http——https实现指南
  • ROS仿真R2机器人之安装运行及MoveIt的介绍
  • 【linux 多线程并发】线程属性设置与查看,绑定CPU,线程分离与可连接,避够多线程下的内存泄漏
  • 70.乐理基础-打拍子-三连音