根据指定日期获取周,月,季度,年的第一天和最后一天
1. 根据指定日期获取周,月,季度,年的第一天和最后一天
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;/*** 根据给定时间获取周、月度、季度、年度开始结束时间*/
public class DateCalendarUtil {/*** @Description: 获取月份第一天* @Author: wsp**/public static Calendar getMonthStart(Date date) {// 月份开始Calendar startCalendar = Calendar.getInstance();startCalendar.setTime(date);//set方法将给定日历字段设置为给定值// 下面代码作用是将日历设置为给定日期月份天数的第一天startCalendar.set(Calendar.DAY_OF_MONTH, 1);return startCalendar;}/*** 获取月份最后一天* @param date* @return*/public static Calendar getMonthEnd(Date date) {// 月份结束Calendar endCalendar = Calendar.getInstance();endCalendar.setTime(date);//getActualMaximum方法用来返回给定日历字段属性的最大值// endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH) 代码作用为返回日历该月份的最大值// set方法,将该日历的给定月份设置为最大天数endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));return endCalendar;}/*** 获取季度第一天* 1.根据给定日期计算当前季度的第一个月份* 2.设置日历的月份为当前季度的第一个月份* 3.最后设置日历月份天数为第一天即可* @param date* @return*/public static Calendar getQuarterStart(Date date) {Calendar startCalendar = Calendar.getInstance();startCalendar.setTime(date);//get方法:获取给定日历属性的值,如 endCalendar.get(Calendar.MONTH) 获取日历的月份// 计算季度数:由于月份从0开始,即1月份的Calendar.MONTH值为0,所以计算季度的第一个月份只需 月份 / 3 * 3startCalendar.set(Calendar.MONTH, (((int) startCalendar.get(Calendar.MONTH)) / 3) * 3);startCalendar.set(Calendar.DAY_OF_MONTH, 1);return startCalendar;}/*** 获取季度最后一天* @param date* @return*/public static Calendar getQuarterEnd(Date date) {// 季度结束Calendar endCalendar = Calendar.getInstance();endCalendar.setTime(date);//计算季度数:由于月份从0开始,即1月份的Calendar.MONTH值为0,所以计算季度的第三个月份只需 月份 / 3 * 3 + 2endCalendar.set(Calendar.MONTH, (((int) endCalendar.get(Calendar.MONTH)) / 3) * 3 + 2);endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));return endCalendar;}/*** 获取年份第一天* @param date* @return*/public static Calendar getYearStart(Date date) {// 年份开始Calendar startCalendar = Calendar.getInstance();startCalendar.setTime(date);startCalendar.set(Calendar.DAY_OF_YEAR, 1);return startCalendar;}/*** 获取年份最后一天* @param date* @return*/public static Calendar getYearEnd(Date date) {// 年份结束Calendar endCalendar = Calendar.getInstance();endCalendar.setTime(date);endCalendar.set(Calendar.DAY_OF_YEAR, endCalendar.getActualMaximum(Calendar.DAY_OF_YEAR));return endCalendar;}/*** 获取当前周第一天(周一)* @param date* @return*/public static Date getWeekStart(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);//获取传入日期属于星期几,根据星期几进行不同处理int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);//周日:需要减去6天为周一。(当传入日期为周日时,若我们直接设置日历天数为周一,则日期会变为下一周的周一,而非当前周)if (dayOfWeek == 1) {calendar.add(Calendar.DAY_OF_MONTH, -6);} else {//周二 至 周六:直接获取周一即可calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);}return calendar.getTime();}/*** 获取当前周最后一天(周日)* @param date* @return*/public static Date getWeekEnd(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(getWeekStart(date));calendar.add(Calendar.DAY_OF_MONTH, 6);return calendar.getTime();}public static void main(String[] args) throws ParseException {String dateStr = "2023-08-15";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date = sdf.parse(dateStr);String startMonthDay = sdf.format(getMonthStart(date).getTime());String endMonthDay = sdf.format(getMonthEnd(date).getTime());System.out.printf("月份的第一天:%s, 月份的最后一天:%s%n", startMonthDay, endMonthDay);String startQuarterDay = sdf.format(getQuarterStart(date).getTime());String endQuarterDay = sdf.format(getQuarterEnd(date).getTime());System.out.printf("季度第一天:%s, 季度最后一天:%s%n", startQuarterDay, endQuarterDay);String startYearDay = sdf.format(getYearStart(date).getTime());String endYearDay = sdf.format(getYearEnd(date).getTime());System.out.printf("年份第一天:%s, 年份最后一天:%s%n", startYearDay, endYearDay);String startWeekDay = sdf.format(getWeekStart(date));String endWeekDay = sdf.format(getWeekEnd(date));System.out.printf("当前周周一:%s, 当前周周日:%s%n", startWeekDay, endWeekDay);}}
相关文章:

根据指定日期获取周,月,季度,年的第一天和最后一天
1. 根据指定日期获取周,月,季度,年的第一天和最后一天 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;/*** 根据给定时间获取周、月度、季度、年度开始结束时间*…...

CRMEB商城系统:便捷、安全、多样化的购物方式
商城系统是当今社会商业发展的重要组成部分,它以数字化、网络化的方式提供商品和服务。商城系统通过互联网技术,将商品和消费者紧密连接,方便了购物的流程和效率。 商城系统的特点之一是无国界化。传统实体商店通常受限于地理位置和时间&…...

同步_异步请求和Ajax并利用axios框架简化
目录 同步和异步 原生的Ajax 创建XMLHttpRequest对象 常用方法 常用属性 axios框架 同步和异步 同步请求:发送请求后,会做出回应,回应的内容会覆盖浏览器中的内容,这样会打断其他正常的操作,显得不太友好&#…...

取个对象值导致系统崩溃
取个对象值导致系统崩溃 前言 想必各位小伙经常在项目中遇到一些错误,取对象值的时候,经常报错,又或者某些项目突然就挂经常都是出现在一些对象取值上面,然后就被领导一顿训斥 报错分析 例如: 下面这个报错大家想必不会陌生&am…...

nestjs 基础、使用 passport 来进行鉴权
回顾一些定义 NestJS 部分 Module 模块结构 模块是一个图状引用关系。 模块的实例化有三种模式。默认情况是 singletones 模式,也就是模块可能被引用,但不同的引用处拿的是同一个共享实例,也就是说一个进程有一个唯一的实例被共享。 模块&a…...
1.1 : DNA 螺旋
概述 脱氧核糖核酸(DNA)是负责在所有生物体和大多数病毒中代代相传性状的遗传物质。DNA由两条相互缠绕形成双螺旋的核苷酸链组成。DNA 结构的发现是在近一个世纪的时间里逐步发现的,代表了科学史上最著名、最迷人的故事之一。 DNA 结构详细信息 每条 DNA 链均由称为核苷酸…...

.gitignore匹配规则
目录 1.直接一个名称2.斜杠 /3.符号 *4.问号 ?5.感叹号 !6.gitkeep 借鉴抖音账号: 渡一前端提薪课 1.直接一个名称 会忽略目录下的所有该名称文件和文件夹,无论嵌套多深。 2.斜杠 / 1.斜杠在开头(/dist):忽略和.gitig…...

Python-OpenCV中的图像处理-GrabCut算法交互式前景提取
Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 cv2.grabCut(img: Mat, mask: typing.Optional[Mat], rect, bgdModel, fgdModel, iterCount, mode…) img…...
JAVA 鼠标控制与键盘输入控制
核心类:java.awt.Robot 该类是JDK定义的电脑系统的抽象类,可以用来模拟实现鼠标点击与键盘输入等信息 简单实现一个自动抢票代码: Robot rt new Robot();//可以认为是操作间隔的停歇时间,比如等待页面加载,等弹框内容展示等 r…...
VB+SQL宿舍管理系统设计与实现
摘要 统是采用Visual Basic作为前台开发工具,SQL Server作为后台数据库平台的基于C/S的两层模式的管理系统。宿舍管理系统是目前各所高校后勤管理之中的重要部分,如何能科学有效的开展好宿舍管理部分的工作,是当前高校领导人和后勤管理人员关心的问题。因此,宿舍管理部分工…...
自律人生:戒断视频、游戏、小说、躺在床上不玩手机、睡觉前总结和冥想(提升注意力、专注度)
以下是一些方法来戒断视频、游戏、小说、躺在床上不玩手机,以及提高注意力和专注力。 制定计划 制定一个详细的计划,包括要戒断的东西、时间表以及对于成功戒断的奖励。这将帮助你保持目标,让你更容易达到成功。 找到替代品 尝试找到其他…...

学习笔记十四:K8S最小调度单元POD概述
K8S最小调度单元POD概述 k8s核心资源Pod介绍Pod是什么Pod如何管理多个容器Pod网络Pod存储代码自动发版更新收集业务日志 Pod工作方式自主式Pod控制器管理的Pod(防误删除) 如何基于Pod运行应用 k8s核心资源Pod介绍 K8s官方文档:https://kubernetes.io/ K8s中文官方文…...

ARM--day2(cpsr、spsr、数据搬移指令、移位操作指令、位运算操作指令、算数运算指令、比较指令、跳转指令)
.text .global _gcd _gcd:mov r0,#9mov r1,#15b loop loop:cmp r0,r1beq stopsubhi r0,r1bhi loopsubcc r1,r0bcc loopstop:b stop.end用for循环实现1~100之间和5050 .text .global _gcd _gcd:mov r0,#0x0mov r1,#0x1mov r2,#0x64b loop loop:cmp r1,r2bhi stopadd r0,r0,r1ad…...

idea报错:java: 程序包org.springframework.web.bind.annotation不存在
这个错误通常都是maven仓库的问题,试了网上很多方法,都没有解决,如果大家有遇到这个问题,且试了很多方法之后都没有解决,不妨可以试试我这个方法 先编译一下已经写好的代码,这时候会出现以上报错ÿ…...

Android平台GB28181设备接入端如何实现多视频通道接入?
技术背景 我们在设计Android平台GB28181设备接入模块的时候,有这样的场景诉求,一个设备可能需要多个通道,常见的场景,比如车载终端,一台设备,可能需要接入多个摄像头,那么这台车载终端设备可以…...

Evaluation Warning: The document was created with Spire.Doc for JAVA.
spire.doc-5.4.10.jar 生成PDF有广告语水印【Evaluation Warning: The document was created with Spire.Doc for JAVA.】 <!-- maven库访问不了 https://mvnrepository.com/artifact/e-iceblue/spire.doc e-iceblue库才能访问 https://repo.e-iceblue.cn/repository/maven…...
Java“牵手”根据关键词搜索(分类搜索)京东商品列表页面数据获取方法,京东API实现批量商品数据抓取示例
京东商城是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取京东商品列表和商品详情页面数据,您可以通过开放平台的接口或者直接访问京东商城的网页来获取商品详情信息。以下是两种常用方法的介绍&…...

AIGC|AGI究竟是什么?为什么大家都在争先入场?
一、AI大语言模型进入爆发阶段 2022年12月ChatGPT突然爆火,原因是其表现出来的智能化已经远远突破了我们的常规认知。虽然其呈现在使用者面前仅仅只是一个简单的对话问答形式,但是它的内容化水平非常强大,甚至在某些方面已经超过人类了&#…...

【数学建模】--主成分分析
本讲将介绍主成分分析(Principal Component Analysis,PCA),主成分分析是一种降维算法,它能将多个指标转换为少数几个主成分,这些主成分是原始变量的线性组合,且彼此之间互不相关,其能…...

gitee(码云)如何生成并添加公钥,以及配置用户信息
一,简介 在使用Gitee的时候,公钥是必须的,无论是克隆还是上传。本文主要介绍如何本地生成和添加公钥到服务器,然后配置自己的用户信息,方便日后拉取与上传代码。 二,步骤介绍 2.1 本地生成公钥 打开git ba…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...