之前写的获取大小周会因为月份的变化数据会错乱,比如当前月份的1号并不是星期一,而是随意的星期

目前代码能够实现的功能用户随意输入时间会根据当前时间判定是星期几,在动态改变获取大小周的参数

还是老样子根据用户输入的时间生成日历 你们要用直接把start,和end的参数换成你们自己的

// 返回的日期集合,生成日期List days = new ArrayList<>();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");try {Date start = dateFormat.parse(hwqCheckGroup.getStartTime());Date end = dateFormat.parse(hwqCheckGroup.getEndTime());Calendar tempStart = Calendar.getInstance();tempStart.setTime(start);Calendar tempEnd = Calendar.getInstance();tempEnd.setTime(end);tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束)while (tempStart.before(tempEnd)) {days.add(dateFormat.format(tempStart.getTime()));tempStart.add(Calendar.DAY_OF_YEAR, 1);}} catch (ParseException e) {e.printStackTrace();}

然后把数据插入到自己的业务表中

这段代码提供思路参考

 //给分组下每个人生成日期List<HwqCheckUser> hwqCheckUsers= hwqCheckUserMapper.getByGroupCode(hwqCheckGroup.getId());//先删除之前的数据hwqCheckCalendarMapper.deleteWeek(days,hwqCheckUsers);//生成的新日历写进数据库hwqCheckCalendarMapper.insertWeek(days,hwqCheckUsers);

对应的mybatis 批量删除数据

批量插入数据 List爆红不用管

计算大小周

q决定了获取日期集合里的参数位置

//第一周为大周时
if (hwqCheckGroup.getFirst().equals("2")){//bigSize默认设为5就行int q=bigsize;try {Date parse = formatter.parse((String) days.get(0));//判断当前是星期几int date = parse.getDay();switch(date){case 2 :q =4;break;case 3 :q = 3;break;case 4 :q = 2;break;case 5 :q =1;break;case 6 :q = 0;break;}} catch (ParseException e) {e.printStackTrace();}weekTime = new ArrayList<>();for (int i=1;i<=7-bigsize;i++){weekTime.add(days.get(q+(i-1)));}for (int i=0;i<=q;i++){for ( q=q+8;q<=q+8;){//获取小周if (q>=days.size()){break;}for (int j=0;j<7-(bigsize+1);j++){if ((q-1+j)>=days.size()){break;}weekTime.add(days.get(q+j));}for ( q=q+6;q<=q+6;){//获取大周if (q>=days.size()){break;}for (int f=0;f<7-bigsize;f++){if ((q-1+f)>=days.size()){break;}weekTime.add(days.get(q+f));}}break;}if (q>=days.size()){break;}}}

第一周为小周时

//计算大小周的休息日期 第一周为小周时weekTime = new ArrayList<>();//动态获取周参数int m=smallSize;try {Date parse = formatter.parse((String) days.get(0));int date = parse.getDay();switch(date){case 2 :m =4;break;case 3 :m = 3;break;case 4 :m = 2;break;case 5 :m =1;break;case 6 :m = 0;break;}} catch (ParseException e) {e.printStackTrace();}for (int i=1;i<=7-smallSize;i++){weekTime.add(days.get(m+i));}for (int i=0;i<=m;i++){for ( m=m+6;m<=m+6;){//获取大周if (m>=days.size()){break;}for (int j=1;j<=7-(smallSize-1);j++){if (m+j>=days.size()){break;}weekTime.add(days.get(m+j));}for ( m=m+8;m<=m+8;){//获取小周if (m>=days.size()){break;}for (int f=1;f<=7-smallSize;f++){if (m+f>=days.size()){break;}weekTime.add(days.get(m+f));}}break;}if (m>=days.size()){break;}}

java获取大小周优化相关推荐

  1. [Java] 获取本月周次和日期时间段信息

    package com.wdcloud.monitoring.common;import java.text.SimpleDateFormat; import java.util.ArrayList; ...

  2. java获取指定周的第一天和最后一天(周统计报表)

    项目中需要进行周统计,需要获取特定周的第一天和最后一天,然后在此时间范围内进行统计. /*** 获取指定周的第一天* * @param year* @param week* @return*/publ ...

  3. java 获取周次_[Java] 获取本月周次和日期时间段信息

    packagecom.wdcloud.monitoring.common;importjava.text.SimpleDateFormat;importjava.util.ArrayList;impo ...

  4. java获取指定周的第一天 及 指定周的 最后一天

    文章目录 前言 获取指定周的第一天 及 指定周的 最后一天 前言 做记录用:有借鉴他人代码 获取指定周的第一天 及 指定周的 最后一天 public class WeekYearNum {//regi ...

  5. java获取今天周几

    在这里插入图片描述

  6. Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几

    Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几 //获得入参的日期 Calendar cd = Calendar.getInstance(); cd.setTime(date ...

  7. java 堆大小的最大值_优化Java堆大小的5个技巧

    优化Java堆大小的5个技巧 摘要:Java堆容量不足可以对性能造成很大影响,这样无疑就给程序带来不可必要的麻烦,本文总结了影响Java堆容量不足的五大原因以及巧妙地去优化? 本文作者Pierre是一 ...

  8. JAVA获取图片的宽、高和大小

    JAVA获取图片的宽.高.大小 如果是本地磁盘文件 File file = new File("C:\\Users\\root\\Desktop\\test.jpg");Buffe ...

  9. java 第几周_java获取第几周

    java获取第几周 1.首先创建一个getWeek函数,接收一个Date类型的参数: 2.然后在函数内创建一个GregorianCalendar实例: 3.之后设置GregorianCalendar实 ...

最新文章

  1. 一本算法刷题必读配套书(附链接)
  2. python读取、写入、移动、复制文件(夹)以及其他关于文件(夹)的操作
  3. 2位图灵奖得主、7位院士等一众AI大佬云集共议数字化转型 | CNCC 2021
  4. 自动生成想“变”就“变”
  5. memmove函数使用时注意的问题
  6. 使用Unsafe真的是关于速度或功能吗?
  7. Android BitmapShader 实战 实现圆形、圆角图片
  8. 在家过年这两天|多图
  9. g标签 怎么设置svg_SVG g元素
  10. VS2010~2015番茄助手VA_X 2073 重新安装时遇到问题The security key for this program currently stored on your system
  11. EMR 配置纪录(不断更新)
  12. 基于matpower的电力系统潮流计算matlab程序
  13. linux启动报错23修复
  14. java 僵尸进程_僵尸进程ZOMBIE
  15. 万兆网络传输速度测试_Intel万兆网卡的真实测试万兆速度的方法13718565365
  16. 达梦数据库的备份还原
  17. 《Microduino实战》——1.6 总结
  18. 新手上路开车技巧 八步教你如何倒车入位
  19. 远程桌面无法连接 计算机死机,远程桌面被远程的机器就死机解决方案
  20. iOS冰与火之歌 – Objective-C Pwn and iOS arm64 ROP

热门文章

  1. 邮箱注册分为哪几个步骤?注册申请邮箱后有什么优势?
  2. MTK平台camera bsp学习之android平台架构篇
  3. 一篇所有研究生都该读的好文:阳光温热,科研静好!
  4. 写一个家庭收支明细记账软件1.收支明细2.登记收入 3.登记支出 4.退出
  5. 手工设置Windows服务依赖关系
  6. (五)k8sservice
  7. div+css静态网页设计 网页设计实例作业 ——中国梦我的梦(3页) 学生HTML个人网页作业作品下载
  8. 使用WebRTC搭建前端视频聊天室系列文章
  9. linux命令 mv -v,linux中的mv命令
  10. 如何登录及使用FTP站点上传数据下载数据