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

java通过年月获取当前月所有周(跨月),获取每周开始日期和结束日期

	    /***    根据年月返回本月共几周,每周开始与结束日期*/public static List<Map<String, String>> queryWeek(String year, String month) throws ParseException {/** 周 **/final String[] weeks = { "第一周", "第二周", "第三周", "第四周", "第五周", "第六周" };Calendar calendar = Calendar.getInstance();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try {calendar.setTime(sdf.parse(year + "-" + month + "-01"));} catch (ParseException e) {e.printStackTrace();}int i = calendar.get(Calendar.DAY_OF_WEEK);int months = calendar.get(Calendar.MONTH);switch (i) {case 1:calendar.add(Calendar.DATE, 1);break;case 2:calendar.add(Calendar.DATE, 0);break;case 3:calendar.add(Calendar.DATE, 6);break;case 4:calendar.add(Calendar.DATE, 5);break;case 5:calendar.add(Calendar.DATE, 4);break;case 6:calendar.add(Calendar.DATE, 3);break;case 7:calendar.add(Calendar.DATE, 2);break;default:break;}// 本月的第一个星期List<Map<String, String>> list = new ArrayList<Map<String, String>>();int index = 0;while (true) {if (index++ > 0){calendar.add(Calendar.DATE, 1);}Map<String, String> map = new HashMap<String, String>();map.put("start", sdf.format(calendar.getTime()));calendar.add(Calendar.DATE, 6);map.put("end", sdf.format(calendar.getTime()));map.put("week", weeks[index - 1]);list.add(map);// 判断是否跨月if (months != calendar.get(Calendar.MONTH)){break;}}return list;}测试:public static void main(String[] args) throws Exception {List<Map<String, String>> list = queryWeek("2023","10");System.out.println(list);}

打印结果:


[
    { week=第一周, start=2023-10-02, end=2023-10-08 },      
    { week=第二周, start=2023-10-09, end=2023-10-15 },           
    { week=第三周, start=2023-10-16, end=2023-10-22 },
    { week=第四周, start=2023-10-23, end=2023-10-29 },
    { week=第五周, start=2023-10-30, end=2023-11-05 }
]

相关文章:

  • css 固定按钮到页面顶部或者底部的实现方式
  • 百度云加速免费版下线,推荐几款目前仍旧免费的CDN
  • 国家开放大学平时作业 练习题
  • C#,《小白学程序》第七课:列表(List)其一,编制《高铁车次信息表》
  • Git工作流和Commit规范
  • 【电子通识】为什么说做产品不是简单的将不同的技术进行搭积木?
  • 排序算法-----快速排序(非递归实现)
  • 安卓开发之HTTP API服务接口设计(基于okhttp3请求)
  • uni-app小程序 swiper 分页器样式修改
  • cocos2dx ​​Animate3D(二)
  • 《微信小程序开发从入门到实战》学习二十五
  • Qt/QML编程学习之心得:一个Qt工程的学习笔记(九)
  • 2023-11-22 LeetCode每日一题(网格中的最小路径代价)
  • C#语言高阶开发
  • 药品一致性评价工作开展流程(常见问题40个)
  • 2019.2.20 c++ 知识梳理
  • 4. 路由到控制器 - Laravel从零开始教程
  • C++类中的特殊成员函数
  • HTML5新特性总结
  • LeetCode算法系列_0891_子序列宽度之和
  • node学习系列之简单文件上传
  • python 装饰器(一)
  • 初识 beanstalkd
  • 创建一种深思熟虑的文化
  • 从伪并行的 Python 多线程说起
  • 前嗅ForeSpider采集配置界面介绍
  • 探索 JS 中的模块化
  • 移动端唤起键盘时取消position:fixed定位
  • 异步
  • 再次简单明了总结flex布局,一看就懂...
  • 主流的CSS水平和垂直居中技术大全
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #Datawhale AI夏令营第4期#多模态大模型复盘
  • #define 用法
  • #window11设置系统变量#
  • #单片机(TB6600驱动42步进电机)
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (三)docker:Dockerfile构建容器运行jar包
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (学习日记)2024.02.29:UCOSIII第二节
  • (一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)ABI是什么
  • .naturalWidth 和naturalHeight属性,
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript
  • .net web项目 调用webService
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .NET是什么