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

根据指定日期获取周,月,季度,年的第一天和最后一天

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仓库的问题,试了网上很多方法,都没有解决,如果大家有遇到这个问题,且试了很多方法之后都没有解决,不妨可以试试我这个方法 先编译一下已经写好的代码,这时候会出现以上报错&#xff…...

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实现批量商品数据抓取示例

京东商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取京东商品列表和商品详情页面数据&#xff0c;您可以通过开放平台的接口或者直接访问京东商城的网页来获取商品详情信息。以下是两种常用方法的介绍&…...

AIGC|AGI究竟是什么?为什么大家都在争先入场?

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

【数学建模】--主成分分析

本讲将介绍主成分分析&#xff08;Principal Component Analysis&#xff0c;PCA&#xff09;&#xff0c;主成分分析是一种降维算法&#xff0c;它能将多个指标转换为少数几个主成分&#xff0c;这些主成分是原始变量的线性组合&#xff0c;且彼此之间互不相关&#xff0c;其能…...

gitee(码云)如何生成并添加公钥,以及配置用户信息

一&#xff0c;简介 在使用Gitee的时候&#xff0c;公钥是必须的&#xff0c;无论是克隆还是上传。本文主要介绍如何本地生成和添加公钥到服务器&#xff0c;然后配置自己的用户信息&#xff0c;方便日后拉取与上传代码。 二&#xff0c;步骤介绍 2.1 本地生成公钥 打开git ba…...

基于MATLAB的齿轮系统非线性动力学特性分析:参数阻尼比变化调节下的输出结果

基于matlab的齿轮系统非线性动力学特性分析 基于matlab的齿轮系统非线性动力学特性分析&#xff0c;综合考虑齿侧间隙、时变啮合刚度、综合啮合误差等因素下&#xff0c;参数阻尼比变化调节下&#xff0c;输出位移、相图、载荷、频率幅值结果 程序已调通&#xff0c;可直接运行…...

比话降AI和嘎嘎降AI哪个好知网用户怎么选

比话降AI和嘎嘎降AI是2026年降AI率工具里被讨论最多的两款。两款都有真实用户实测数据&#xff0c;都有退款保障&#xff0c;都不是"交学费型"的工具。 但它们不一样&#xff0c;适合不同的人。 这篇文章专门从知网用户的角度来对比&#xff0c;说清楚什么情况选比…...

别再只盯着Protobuf了!从DDS到Thrift,聊聊不同IDL在自动驾驶和机器人项目里的真实选型

自动驾驶与机器人系统中的IDL选型实战&#xff1a;从DDS到Thrift的深度解析 在自动驾驶和机器人系统的开发中&#xff0c;接口定义语言(IDL)的选择往往决定了整个通信架构的成败。当激光雷达每秒产生数十万点云数据&#xff0c;当多个传感器需要在毫秒级完成数据融合&#xff…...

C#实战:基于TouchSocket构建高性能WebSocket双向通信系统

1. WebSocket与TouchSocket核心概念 第一次接触WebSocket时&#xff0c;我被它的双向通信能力惊艳到了。想象一下快递员和收件人的关系&#xff1a;传统HTTP就像每次送货都要重新敲门确认身份&#xff08;建立连接&#xff09;&#xff0c;而WebSocket则像快递员直接把包裹交给…...

VS2019项目配置全解析:从附加库到包含目录的实战指南

1. VS2019项目配置基础概念解析 刚接触VS2019时&#xff0c;我完全被各种配置选项搞晕了。特别是当需要引入第三方库时&#xff0c;附加库、包含目录这些概念简直让人抓狂。记得第一次配置OpenCV项目&#xff0c;光是让编译器找到头文件就折腾了大半天。后来才发现&#xff0c;…...

【重磅原创改进代码】基于自适应峰谷感知(APVP)多头注意力(MHA)多任务学习(MTL)的多变量多输出时间序列预测附Python代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…...

Omni-Vision Sanctuary 在 Proteus 仿真中的应用:智能电路设计与调试助手

Omni-Vision Sanctuary 在 Proteus 仿真中的应用&#xff1a;智能电路设计与调试助手 1. 电子工程师的新助手 作为一名电子工程师&#xff0c;你是否经历过这样的场景&#xff1a;面对一个功能需求&#xff0c;花了大量时间查阅资料却找不到合适的电路方案&#xff1b;仿真波…...

LM1875电路调校实战:从元件选型到稳定性优化全解析

1. LM1875功放电路基础解析 LM1875作为经典的音频功放芯片&#xff0c;以其结构简单、音质优良著称。但很多初学者在复刻电路时容易陷入"照搬电路图却问题频出"的困境。我们先拆解官方电路图中每个元件的实际作用&#xff0c;这比单纯知道"用什么"更重要。…...

ZeroOmega代理管理实战指南:构建高效的多代理切换方案

ZeroOmega代理管理实战指南&#xff1a;构建高效的多代理切换方案 【免费下载链接】ZeroOmega Manage and switch between multiple proxies quickly & easily. 项目地址: https://gitcode.com/gh_mirrors/ze/ZeroOmega 在当今复杂的网络环境中&#xff0c;代理管理…...

建筑混凝土搅拌机的设计【任务书、带solidworks三维、7张cad图纸、毕业论文、开题报告、答辩稿】

建筑混凝土搅拌机作为现代建筑施工的核心设备&#xff0c;其设计需兼顾效率、可靠性与适应性。任务书明确了设计目标&#xff1a;通过优化搅拌机构、传动系统及整体结构&#xff0c;实现混凝土均匀性提升与能耗降低&#xff0c;同时确保设备在复杂工况下的稳定性。这一目标贯穿…...