实际项目中时间可能需要按周来计算,那么就需要知道某年度的所有周了

/*** 获取指定年的所有周* @param year* @return*/
public static List<Map<String, Object>> getWeekOfYear(int year) {List list = new ArrayList<>();// 获取当前日期属于第几周int weekNumOfYear = getWeekNumOfYear(new Date());//初始化,第一周至少四天,周天数占比WeekFields wfs = WeekFields.of(DayOfWeek.MONDAY, 4);//一年最后一天日期的LocalDate,如果该天获得的周数为1或52,那么该年就只有52周,否则就是53周//获取指定时间所在年的周数int num = LocalDate.of(year, 12, 31).get(wfs.weekOfWeekBasedYear());num = num == 1 ? 52 : num;// num控制周数for (int i = 1; i <= num; i++) {String days = getDay(year, i, DayOfWeek.MONDAY) + "," +getDay(year, i, DayOfWeek.TUESDAY) + "," +getDay(year, i, DayOfWeek.WEDNESDAY) + "," +getDay(year, i, DayOfWeek.THURSDAY) + "," +getDay(year, i, DayOfWeek.FRIDAY) + "," +getDay(year, i, DayOfWeek.SATURDAY) + "," +getDay(year, i, DayOfWeek.SUNDAY);String[] split = trim(days, ",").split(",");String start = split[0];String end = split[split.length - 1];days = start + "~" + end;System.out.println(2022 + "年,第" + i + "周,日期:" + days);
//            System.out.println(2022 + "week" + i + "(" + days + ")");HashMap<Object, Object> data = new HashMap<>();data.put("year", year);data.put("week", i);data.put("days", days);data.put("startDay", start);data.put("end", end);data.put("isCurrentWeek", 0);// 设置周数是否是当前周数if (weekNumOfYear == i) {data.put("isCurrentWeek", 1);}list.add(data);}return list;
}private static String getDay(Integer year, Integer num, DayOfWeek dayOfWeek) {//周数小于10在前面补个0String numStr = num < 10 ? "0" + String.valueOf(num) : String.valueOf(num);//2019-W01-01获取第一周的周一日期,2019-W02-07获取第二周的周日日期String weekDate = String.format("%s-W%s-%s", year, numStr, dayOfWeek.getValue());String date = LocalDate.parse(weekDate, DateTimeFormatter.ISO_WEEK_DATE).toString();String[] split = date.split("-");if (!split[0].equals(year.toString())) {//返回日期范围属于指定年return "";}date = split[1] + "-" + split[2];return date;
}/*** 去除首尾指定字符* @param str     字符串* @param element 指定字符* @return*/
public static String trim(String str, String element) {if (str == null || str.equals("")) return str;boolean beginIndexFlag = true;boolean endIndexFlag = true;do {int beginIndex = str.indexOf(element) == 0 ? 1 : 0;int endIndex = str.lastIndexOf(element) + 1 == str.length() ? str.lastIndexOf(element) : str.length();str = str.substring(beginIndex, endIndex);beginIndexFlag = (str.indexOf(element) == 0);endIndexFlag = (str.lastIndexOf(element) + 1 == str.length());} while (beginIndexFlag || endIndexFlag);return str;
}/*** 取得某天是一年中的多少周* @param date* @return*/
public static int getWeekNumOfYear(Date date) {Calendar c = new GregorianCalendar();c.setFirstDayOfWeek(Calendar.MONDAY);c.setMinimalDaysInFirstWeek(7);c.setTime(date);return c.get(Calendar.WEEK_OF_YEAR);
}

测试:

public static void main(String[] args) throws JSONException {List<Map<String, Object>> weekOfWeek = getWeekOfYear(2022);System.out.println(JSONUtils.serialize(weekOfWeek));
}

控制台打印输出结果:

2022年,第1周,日期:01-03~01-09
2022年,第2周,日期:01-10~01-16
2022年,第3周,日期:01-17~01-23
2022年,第4周,日期:01-24~01-30
2022年,第5周,日期:01-31~02-06
2022年,第6周,日期:02-07~02-13
2022年,第7周,日期:02-14~02-20
2022年,第8周,日期:02-21~02-27
2022年,第9周,日期:02-28~03-06
2022年,第10周,日期:03-07~03-13
2022年,第11周,日期:03-14~03-20
2022年,第12周,日期:03-21~03-27
2022年,第13周,日期:03-28~04-03
2022年,第14周,日期:04-04~04-10
2022年,第15周,日期:04-11~04-17
2022年,第16周,日期:04-18~04-24
2022年,第17周,日期:04-25~05-01
2022年,第18周,日期:05-02~05-08
2022年,第19周,日期:05-09~05-15
2022年,第20周,日期:05-16~05-22
2022年,第21周,日期:05-23~05-29
2022年,第22周,日期:05-30~06-05
2022年,第23周,日期:06-06~06-12
2022年,第24周,日期:06-13~06-19
2022年,第25周,日期:06-20~06-26
2022年,第26周,日期:06-27~07-03
2022年,第27周,日期:07-04~07-10
2022年,第28周,日期:07-11~07-17
2022年,第29周,日期:07-18~07-24
2022年,第30周,日期:07-25~07-31
2022年,第31周,日期:08-01~08-07
2022年,第32周,日期:08-08~08-14
2022年,第33周,日期:08-15~08-21
2022年,第34周,日期:08-22~08-28
2022年,第35周,日期:08-29~09-04
2022年,第36周,日期:09-05~09-11
2022年,第37周,日期:09-12~09-18
2022年,第38周,日期:09-19~09-25
2022年,第39周,日期:09-26~10-02
2022年,第40周,日期:10-03~10-09
2022年,第41周,日期:10-10~10-16
2022年,第42周,日期:10-17~10-23
2022年,第43周,日期:10-24~10-30
2022年,第44周,日期:10-31~11-06
2022年,第45周,日期:11-07~11-13
2022年,第46周,日期:11-14~11-20
2022年,第47周,日期:11-21~11-27
2022年,第48周,日期:11-28~12-04
2022年,第49周,日期:12-05~12-11
2022年,第50周,日期:12-12~12-18
2022年,第51周,日期:12-19~12-25
2022年,第52周,日期:12-26~12-31

实际上我们项目要的不是这种格式,我们重新格式化一下返回json数据

isCurrentWeek 表示当前周

[{"week": 1,"year": 2022,"startDay": "01-03","days": "01-03~01-09","end": "01-09","isCurrentWeek": 0},{"week": 2,"year": 2022,"startDay": "01-10","days": "01-10~01-16","end": "01-16","isCurrentWeek": 0},{"week": 3,"year": 2022,"startDay": "01-17","days": "01-17~01-23","end": "01-23","isCurrentWeek": 0},{"week": 4,"year": 2022,"startDay": "01-24","days": "01-24~01-30","end": "01-30","isCurrentWeek": 0},{"week": 5,"year": 2022,"startDay": "01-31","days": "01-31~02-06","end": "02-06","isCurrentWeek": 0},{"week": 6,"year": 2022,"startDay": "02-07","days": "02-07~02-13","end": "02-13","isCurrentWeek": 0},{"week": 7,"year": 2022,"startDay": "02-14","days": "02-14~02-20","end": "02-20","isCurrentWeek": 0},{"week": 8,"year": 2022,"startDay": "02-21","days": "02-21~02-27","end": "02-27","isCurrentWeek": 0},{"week": 9,"year": 2022,"startDay": "02-28","days": "02-28~03-06","end": "03-06","isCurrentWeek": 0},{"week": 10,"year": 2022,"startDay": "03-07","days": "03-07~03-13","end": "03-13","isCurrentWeek": 0},{"week": 11,"year": 2022,"startDay": "03-14","days": "03-14~03-20","end": "03-20","isCurrentWeek": 0},{"week": 12,"year": 2022,"startDay": "03-21","days": "03-21~03-27","end": "03-27","isCurrentWeek": 0},{"week": 13,"year": 2022,"startDay": "03-28","days": "03-28~04-03","end": "04-03","isCurrentWeek": 1},{"week": 14,"year": 2022,"startDay": "04-04","days": "04-04~04-10","end": "04-10","isCurrentWeek": 0},{"week": 15,"year": 2022,"startDay": "04-11","days": "04-11~04-17","end": "04-17","isCurrentWeek": 0},{"week": 16,"year": 2022,"startDay": "04-18","days": "04-18~04-24","end": "04-24","isCurrentWeek": 0},{"week": 17,"year": 2022,"startDay": "04-25","days": "04-25~05-01","end": "05-01","isCurrentWeek": 0},{"week": 18,"year": 2022,"startDay": "05-02","days": "05-02~05-08","end": "05-08","isCurrentWeek": 0},{"week": 19,"year": 2022,"startDay": "05-09","days": "05-09~05-15","end": "05-15","isCurrentWeek": 0},{"week": 20,"year": 2022,"startDay": "05-16","days": "05-16~05-22","end": "05-22","isCurrentWeek": 0},{"week": 21,"year": 2022,"startDay": "05-23","days": "05-23~05-29","end": "05-29","isCurrentWeek": 0},{"week": 22,"year": 2022,"startDay": "05-30","days": "05-30~06-05","end": "06-05","isCurrentWeek": 0},{"week": 23,"year": 2022,"startDay": "06-06","days": "06-06~06-12","end": "06-12","isCurrentWeek": 0},{"week": 24,"year": 2022,"startDay": "06-13","days": "06-13~06-19","end": "06-19","isCurrentWeek": 0},{"week": 25,"year": 2022,"startDay": "06-20","days": "06-20~06-26","end": "06-26","isCurrentWeek": 0},{"week": 26,"year": 2022,"startDay": "06-27","days": "06-27~07-03","end": "07-03","isCurrentWeek": 0},{"week": 27,"year": 2022,"startDay": "07-04","days": "07-04~07-10","end": "07-10","isCurrentWeek": 0},{"week": 28,"year": 2022,"startDay": "07-11","days": "07-11~07-17","end": "07-17","isCurrentWeek": 0},{"week": 29,"year": 2022,"startDay": "07-18","days": "07-18~07-24","end": "07-24","isCurrentWeek": 0},{"week": 30,"year": 2022,"startDay": "07-25","days": "07-25~07-31","end": "07-31","isCurrentWeek": 0},{"week": 31,"year": 2022,"startDay": "08-01","days": "08-01~08-07","end": "08-07","isCurrentWeek": 0},{"week": 32,"year": 2022,"startDay": "08-08","days": "08-08~08-14","end": "08-14","isCurrentWeek": 0},{"week": 33,"year": 2022,"startDay": "08-15","days": "08-15~08-21","end": "08-21","isCurrentWeek": 0},{"week": 34,"year": 2022,"startDay": "08-22","days": "08-22~08-28","end": "08-28","isCurrentWeek": 0},{"week": 35,"year": 2022,"startDay": "08-29","days": "08-29~09-04","end": "09-04","isCurrentWeek": 0},{"week": 36,"year": 2022,"startDay": "09-05","days": "09-05~09-11","end": "09-11","isCurrentWeek": 0},{"week": 37,"year": 2022,"startDay": "09-12","days": "09-12~09-18","end": "09-18","isCurrentWeek": 0},{"week": 38,"year": 2022,"startDay": "09-19","days": "09-19~09-25","end": "09-25","isCurrentWeek": 0},{"week": 39,"year": 2022,"startDay": "09-26","days": "09-26~10-02","end": "10-02","isCurrentWeek": 0},{"week": 40,"year": 2022,"startDay": "10-03","days": "10-03~10-09","end": "10-09","isCurrentWeek": 0},{"week": 41,"year": 2022,"startDay": "10-10","days": "10-10~10-16","end": "10-16","isCurrentWeek": 0},{"week": 42,"year": 2022,"startDay": "10-17","days": "10-17~10-23","end": "10-23","isCurrentWeek": 0},{"week": 43,"year": 2022,"startDay": "10-24","days": "10-24~10-30","end": "10-30","isCurrentWeek": 0},{"week": 44,"year": 2022,"startDay": "10-31","days": "10-31~11-06","end": "11-06","isCurrentWeek": 0},{"week": 45,"year": 2022,"startDay": "11-07","days": "11-07~11-13","end": "11-13","isCurrentWeek": 0},{"week": 46,"year": 2022,"startDay": "11-14","days": "11-14~11-20","end": "11-20","isCurrentWeek": 0},{"week": 47,"year": 2022,"startDay": "11-21","days": "11-21~11-27","end": "11-27","isCurrentWeek": 0},{"week": 48,"year": 2022,"startDay": "11-28","days": "11-28~12-04","end": "12-04","isCurrentWeek": 0},{"week": 49,"year": 2022,"startDay": "12-05","days": "12-05~12-11","end": "12-11","isCurrentWeek": 0},{"week": 50,"year": 2022,"startDay": "12-12","days": "12-12~12-18","end": "12-18","isCurrentWeek": 0},{"week": 51,"year": 2022,"startDay": "12-19","days": "12-19~12-25","end": "12-25","isCurrentWeek": 0},{"week": 52,"year": 2022,"startDay": "12-26","days": "12-26~12-31","end": "12-31","isCurrentWeek": 0}
]

获取某年的所有周日期相关推荐

  1. 某年中某周的开始与结束日期以及某月的开始结束

    最近项目有个需求,获取某年中某一周的开始与结束日期,某年中某一个月的开始与结束日期. 1.获取某年中某一周的日期:一般来说,一年最多有53周,平年365天,即52周余一天,闰年366天,即52周余二天 ...

  2. java获取一年的周数、单周开始时间与结束时间、一年所有周开始时间与结束时间、月开始时间与结束时间

    java获取一年的周数.单周开始时间与结束时间.一年所有周开始时间与结束时间.月开始时间与结束时间 package com.frgk.produce.util;import org.springfra ...

  3. php获取7天,php 获取未来七天的日期和星期

    php获取未来七天的日期和星期代码 for($i=4;$i<8;$i++){ $dateArray[$i]=date('Y-m-d',strtotime(date('Y-m-d').'+'.$i ...

  4. oracle中怎样获取一周的日期,Oracle如何获取某年每月第N周星期X的所有日期

    Oracle如何获取某年每月第N周星期X的所有日期 要求:列出2012年每月第二周星期二的日期 两种理解: www.2cto.com 1.认为每周第一天为星期一(中国习惯),且需求为第二周周二(非第二 ...

  5. java处理最后一周_Java获取某年某周的最后一天

    package test; import java.text.SimpleDateFormat; import java.util.Calendar; /** * ClassName: LastDay ...

  6. java 一周的第一天_Java获取某年某周的第一天

    Java获取某年某周的第一天 1.设计源代码 FirstDayOfWeek.java: /** * @Title:FirstDayOfWeek.java * @Package:com.you.free ...

  7. Java获取某年某周的第一天

    Java获取某年某周的第一天 1.设计源码 FirstDayOfWeek.java: /*** @Title:FirstDayOfWeek.java* @Package:com.you.freemar ...

  8. 根据年份获取周次,根据周次获取日期范围,获取当前年份,周次列表信息。

    在原文的基础上改的,适应我这边的需求,从周一开始到周日(姑且算个原创哈,原文链接在最下边). (1)根据年份获取周次 (2) 获取当前年份周次 (3) 根据选择周次获取日期时间范围 谁有更简单的方法也 ...

  9. js 获取某年的某天是第几周

    /** 2 * 判断年份是否为润年 3 * 4 * @param {Number} year 5  */ 6 function isLeapYear(year) { 7     return (yea ...

  10. c#日期转换周几_C#获取每个年,月,周的起始日期和结束日期的方法

    这篇文章主要介绍了C#获取每个年,月,周的起始日期和结束日期的方法,涉及C#时间与日期基本操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了C#获取每个年,月,周的起始日期和结束日期 ...

最新文章

  1. 李沐团队新作Gluon,复现CV经典模型到BERT,简单好用 | 强烈推荐
  2. Android 探究 LayoutInflater setFactory
  3. go语言web开发框架_Iris框架讲解(六):Session的使用和控制
  4. Mybatis中的缓存
  5. Codeblocks 安装
  6. when is SAP UI5 sap-ui-core.js loaded
  7. python二叉树的创建与遍历
  8. python3环境搭建odoo_【环境配置】ubuntu16.04配置odoo13环境
  9. python代码性能分析_Python 性能分析入门指南
  10. 为什么自己编写的页面总是在那里抖动_别克威朗为什么销量不佳?
  11. oracle11g中用asmlib配置磁盘组,ASM学习笔记_配置ASMLIB磁盘组
  12. android return 如何跳出两个循环_关于不得不学的Android知识之消息机制
  13. 通过python切换hosts文件
  14. 【数据结构C++】哈希表(三)
  15. 新浪微博批量删除微博方法
  16. 计算机五笔打字口诀,学电脑五笔打字-不用背口诀-5分钟轻松学会五笔打字-快来试试吧!.doc...
  17. 波士顿房价预测(回归)
  18. Hadoop之Lzo压缩配置
  19. Codeforces 757F: Team Rocket Rises Again(支配树)
  20. 360网站卫士的IP段添加进服务器的白名单中

热门文章

  1. 论文阅读之 Person Re-identification using Heterogeneous Local Graph Attention Networks
  2. 浙江大学14届计算机学院孙晓宇,郑州外国语学校2011年保送生录取名单
  3. editplus补全java_第三篇 打造JAVA开发环境——EditPlus篇
  4. 以下描述中最不适合用计算机编程来处理的是,以下描述中最适合用计算机编程来处理的问题是( ?)。...
  5. java 子网掩码 位数_java实现子网掩码转换为网络标识位 | 学步园
  6. 转自 静心梦工厂
  7. Mac os查看共享文件
  8. .NET的.snk文件使用方法
  9. 关于扫雷的c语言程序设计,C语言程序设计扫雷游戏实验报告
  10. 16进制是否能整除 求余的运算