获取某个月中的第一天和最后一天某个月的天数当月第一天,当月最后一天,当年的第一天,当年的最后一天

获取某个月中的第一天和最后一天&某个月的天数

public static void main(String args[]){int month = 2;// 2月Calendar cal = Calendar.getInstance();cal.set(Calendar.YEAR, 2022);cal.set(Calendar.MONTH, month - 1);int max = cal.getActualMaximum(Calendar.DATE);int min = cal.getActualMinimum(Calendar.DATE);System.out.println(min);System.out.println(max);}

结果:

1
28

当月第一天,当月最后一天,当年的第一天,当年的最后一天

1.第一种实现方式(使用calendar类实现)

小结: 这里是利用 Calendar 日历类进行设置

1.1 获取当前时间所在月的第一天

    /*** 获取传入日期所在月的第一天*/private static Date getFirstDayDateOfMonth(final Date date) {final Calendar cal = Calendar.getInstance();cal.setTime(date);final int last = cal.getActualMinimum(Calendar.DAY_OF_MONTH);cal.set(Calendar.DAY_OF_MONTH, last);Date time = cal.getTime();return processFirstDate(time);}/*** 处理时间,在日期后面,增加 00:00:00*/private static Date processFirstDate(Date time) {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String firstDate = df.format(time);StringBuilder firstDateTimeStr = new StringBuilder().append(firstDate).append(" 00:00:00");Date firstDateTime = null;try {firstDateTime = sdf.parse(firstDateTimeStr.toString());} catch (ParseException e) {e.printStackTrace();}return firstDateTime;}

测试结果:

    @Testprivate void testFirstDayOfMonth(){SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 获取当前时间long currentTimeMillis = System.currentTimeMillis();Date currentDate = new Date(currentTimeMillis);// 获取当前时间所在月的第一天Date firstDayDateOfMonth = getFirstDayDateOfMonth(currentDate);System.out.println("当前时间为:"+format.format(currentTimeMillis));System.out.println("当前时间为:"+format.format(firstDayDateOfMonth));}
}/*** 获取到当前时间*/private Date getCurrentDate() {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");long currentTimeMillis = System.currentTimeMillis();Date currentDate = new Date(currentTimeMillis);System.out.println("当前时间为:" + format.format(currentDate));return currentDate;}
// 输出结果
//当前时间为:2021-09-28 09:12:03
//所在月第一天为:2021-09-01 00:00:00

1.2 获取当前时间所在月的最后一天

    /*** 获取传入日期所在月的最后一天*/private static Date getLastDayOfMonth(final Date date) {final Calendar cal = Calendar.getInstance();cal.setTime(date);final int last = cal.getActualMaximum(Calendar.DAY_OF_MONTH);cal.set(Calendar.DAY_OF_MONTH, last);Date time = cal.getTime();return processDate(time);}/*** 在时间后面增加 23:59:59*/private static Date processDate(Date time) {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String lastDate = df.format(time);StringBuilder lastDateTimeStr = new StringBuilder().append(lastDate).append(" 23:59:59");Date lastDateTime = null;try {lastDateTime = sdf.parse(lastDateTimeStr.toString());} catch (ParseException e) {e.printStackTrace();}return lastDateTime;}

测试结果:

    /***  获取当前时间所在月的最后一天*/@Testvoid testLastDayOfMonth() {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 获取当前时间Date currentDate = getCurrentDate();// 获取当前时间所在月的最后一天Date lastDayOfMonth = getLastDayOfMonth(currentDate);System.out.println("所在月第一天为:" + format.format(lastDayOfMonth));}/*** 获取到当前时间*/private Date getCurrentDate() {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");long currentTimeMillis = System.currentTimeMillis();Date currentDate = new Date(currentTimeMillis);System.out.println("当前时间为:" + format.format(currentDate));return currentDate;}
// 运行结果
//当前时间为:2021-09-28 09:17:38
//所在月第一天为:2021-09-30 23:59:59

1.3 获取当前时间所在年的第一天

    /**** 获取传入日期所在年的第一天**/public static Date getFirstDayDateOfYear(final Date date) {final Calendar cal = Calendar.getInstance();cal.setTime(date);final int last = cal.getActualMinimum(Calendar.DAY_OF_YEAR);cal.set(Calendar.DAY_OF_YEAR, last);Date time = cal.getTime();return processFirstDate(time);}/*** 处理时间,在日期后面,增加 00:00:00*/private static Date processFirstDate(Date time) {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String firstDate = df.format(time);StringBuilder firstDateTimeStr = new StringBuilder().append(firstDate).append(" 00:00:00");Date firstDateTime = null;try {firstDateTime = sdf.parse(firstDateTimeStr.toString());} catch (ParseException e) {e.printStackTrace();}return firstDateTime;}

测试结果:

    /*** 获取当前时间所在年的第一天*/@Testvoid testFirstDayOfYear(){SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 获取当前时间Date currentDate = getCurrentDate();Date firstDayDateOfYear = getFirstDayDateOfYear(currentDate);System.out.println("所在月第一天为:" + format.format(firstDayDateOfYear));}/*** 获取到当前时间*/private Date getCurrentDate() {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");long currentTimeMillis = System.currentTimeMillis();Date currentDate = new Date(currentTimeMillis);System.out.println("当前时间为:" + format.format(currentDate));return currentDate;}
// 输出
//当前时间为:2021-09-28 09:23:28
//所在月第一天为:2021-01-01 00:00:00
123456789101112131415161718192021222324

1.4 获取当前时间所在年的最后一天

    /*** 获取传入日期所在年的最后一天*/private static Date getLastDayOfYear(final Date date) {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");final Calendar cal = Calendar.getInstance();cal.setTime(date);final int last = cal.getActualMaximum(Calendar.DAY_OF_YEAR);cal.set(Calendar.DAY_OF_YEAR, last);Date time = cal.getTime();return processDate(time);}/*** 在时间后面增加 23:59:59*/private static Date processDate(Date time) {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String lastDate = df.format(time);StringBuilder lastDateTimeStr = new StringBuilder().append(lastDate).append(" 23:59:59");Date lastDateTime = null;try {lastDateTime = sdf.parse(lastDateTimeStr.toString());} catch (ParseException e) {e.printStackTrace();}return lastDateTime;}

测试结果:

    /*** 获取当前时间所在年的最后一天*/@Testvoid testLastDayOfYear(){SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 获取当前时间Date currentDate = getCurrentDate();Date lastDayOfYear = getLastDayOfYear(currentDate);System.out.println("所在年最后一天为:" + format.format(lastDayOfYear));}/*** 获取到当前时间*/private Date getCurrentDate() {SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");long currentTimeMillis = System.currentTimeMillis();Date currentDate = new Date(currentTimeMillis);System.out.println("当前时间为:" + format.format(currentDate));return currentDate;}
// 运行结果
// 当前时间为:2021-09-28 09:28:36
// 所在年最后一天为:2021-12-31 23:59:59

2.第二种实现方式(推荐,LocalDateTime类)

2.1 获取当前时间的月初,月末,年初,年末

    /*** 传入时间,获取到传入时间所在月的第一天* 使用 Java8,中的 LocalDateTime 类*/private static LocalDateTime getFirstDayOfMonth(LocalDateTime localDateTime) {return localDateTime.with(TemporalAdjusters.firstDayOfMonth()).withHour(0).withMinute(0).withSecond(0);}/*** 获取传入时间所在月的最后一天*/private static LocalDateTime getLastDayOfMonth(LocalDateTime localDateTime) {return localDateTime.with(TemporalAdjusters.lastDayOfMonth()).withHour(23).withMinute(59).withSecond(59);}/*** 获取传入时间所在年的第一天     **/private static LocalDateTime getFirstDayOfYear(LocalDateTime localDateTime) {return localDateTime.with(TemporalAdjusters.firstDayOfYear()).withHour(0).withMinute(0).withSecond(0);}/*** 获取传入时间所在年的最后一天*/private static LocalDateTime getLastDayOfYear(LocalDateTime localDateTime) {return localDateTime.with(TemporalAdjusters.lastDayOfYear()).withHour(23).withMinute(59).withSecond(59);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554985.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python使用loaddata_Python中LOADDATAINFILE语句导入数据(txt)进入MySQL的一些注意事项...

问题:ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ROW 1 at line 1")代码如下:# -*- coding: utf-8 -*-"&quo…

SimpleDateFormat 日期格式化,以及sdf.parse(“2022-02-30“)顺序加问题

时间日期标识符: yyyy:年 MM:月 dd:日 hh:1~12小时制(1-12) HH:24小时制(0-23) mm:分 ss:秒 S:毫秒 E:星期几 D:一年中的第几…

SimpleDateFormat的线程不安全问题

一、前言 日期的转换与格式化在项目中应该是比较常用的了 一个问题:项目中的日期转换怎么用的?SimpleDateFormat 用过吗?能说一下 SimpleDateFormat 线程安全问题吗,以及如何解决? 回答:平时就是在全局定…

JVM——System.gc、内存溢出、内存泄漏、STW、安全点、安全区域、强软弱虚引用

文章目录①. System.gc()的理解②. 内存溢出(out of Memory)③. 内存泄漏(Memory Leak)④. Stop The World⑤. 多线程中的并行与并发⑥. 垃圾回收的并行、串行、并发⑦. 安全点(Safepoint)⑧. 安全区域(Safe Region)⑨. 引用①. 强引用:不回收②. 软引用: 内存不足即回收③. 弱…

大专生自学java找不到工作_自学Java真的找不到好工作吗?

自学Java真的找不到好工作吗?只能说有点难!虽然职友集数据显示Java开发相关的岗位日招聘量为89754条,全国Java开发工程师的平均薪资为13210元/月。从以上可以看出目前Java行业还远没有饱和,Java开发人才在就业市场也是很吃香&…

Java——ThreadLocal概述、解决SimpleDateFormat出现的异常、内存泄漏、弱引用、remove方法

文章目录①. ThreadLocal简介①. ThreadLocal是什么②. api介绍③. 永远的helloword④. 通过上面代码总结②. 从阿里ThreadLocal规范开始①. 非线程安全的SimpleDateFormat②. 将SimpleDateFormat定义成局部变量(方案一)③. ThreadLocal 解决日期格式乱码问题④. 阿里规范怎么说…

java后端概述_Java后端测试概述

[本文出自天外归云的博客园]多种单测技术1. 要学会Spring MVC/Boot测试中自带的mock方法。2. 学会junit中的方法,对于注解的使用等。3. 学会使用结合第三方Mockito来做mock测试。一些技巧和概念1. 对于复杂方法中,要学会如何拆解逻辑,划分单元…

Java私有方法运用场景_java6-3 封装和private关键字

1、 private:是一个权限修饰符可以修饰成员变量和成员方法被其修饰的成员只能在本类中被访问定义一个学生类:成员变量:name,age成员方法:show()方法2、我们在使用这个案例的过程中,发现了一个问题:通过对象…

JPA入门

文章目录JPA概述JPASpring Data JPAJPA注解基础注解EntityTableIdEnumeratedTransientColumnTemporal联合主键注解IdClassEmbeddable和EmbeddedId注解实体之间关联关系注解OneToOneManyToOne和OneToManyRepositoryJPA查询方式DQM(定义查询方法)使用实例D…

java函数调用约定_2020-09-04:函数调用约定了解么?

福哥答案2020-09-04:初级回答:stdcall和cdecl两者的参数传递顺序都是从右向左。不同点是stdcall在被调用函数 (Callee) 返回前,由被调用函数 (Callee) 调整堆栈。cdecl在被调用函数 (Callee) 返回后,由调用方 (Caller) 调整堆栈&a…

Java实现获取某年某月第一天最后一天

一、某月第一天 /*** 获取某年某月的第一天*/public static String getFisrtDayOfMonth(int year,int month){Calendar cal Calendar.getInstance();//设置年份cal.set(Calendar.YEAR,year);//设置月份cal.set(Calendar.MONTH, month-1);//获取某月最小天数int firstDay cal.…

java xml 读取库_Java开发中读取XML与properties配置文件的方法

相关阅读:1. XML文件:什么是XML?XML一般是指可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。2.XML文件的优点:1)XML文档内容和结构完全分离。2)互操作性强。3)规…

Java8——Stream流操作List排序_List集合中每个对象元素按时间顺序排序

一个学生类的实体类 Data public class Student {private Long id;private String name;private int age;private Double height;public Student(Long id, String name, int age, Double height) {this.id id;this.name name;this.age age;this.height height;}然后我们测…

java线程初始方法三种_Java 多线程 三种实现方式

Java多线程实现方式主要有三种:继承Thread类、实现Runnable接 口、使用ExecutorService、Callable 实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种Callable是带返回值的,返回结果可以从Future中取出来关于Exe…

Java——闰年的判断方法,闰年概念

概念: 闰年分为普通闰年和世纪闰年。 普通闰年是能被4整除但不能被100整除的年份为普通闰年世纪闰年就是能被400整除的为世纪闰年 算闰年的方法很简单,只需要把要计算的年份除以四,如果能够整除,也就是没有小数点,那么这一年就…

java控制层创建websocket_用Java构建一个简单的WebSocket聊天室

前言首先对于一个简单的聊天室,大家应该都有一定的概念了,这里我们省略用户模块的讲解,而是单纯的先说说聊天室的几个功能:自我对话、好友交流、群聊、离线消息等。今天我们要做的demo就能帮我们做到这一点啦!&#xf…

Java中Date与 LocalDateTime ,LocalDate之间的转换

Date与LocalDateTime和LocalDate互相转换思路 Date转LocalDateTime和LocalDate都可以通过Date先转换成Instant然后再转换成LocalDateTime和LocalDate,可以按照下图的方式进行转换。LocalDateTime和LocalDate转换成Date也是以Instant为中介来进行转换的。 1&#xff…

Spring-data-jpa入门(一)

啥是JPA 我这个小白没有听说过,全英文名叫Java Persistence API,就是java持久化api,是SUN公司推出的一套基于ORM的规范。 持久化想必如雷贯耳,都2022年了,谁还不用个持久化框架啊,举起mybatis。 ORM呢&a…

struts单例模式 java_Java单例设计模式详细介绍

Java单例设计模式教程中包含了单例模式的定义、特点以及线路安全等问题。单例模式定义:单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对…

Java8排序 Stream的sorted方法

Java 8 Stream之sorted()排序示例:使用java 8 的流式sorted排序List集合 Stream.sorted 字段排序 功能说明:以自然序或着自定义Comparator 接口排序规则来排序一个流。 功能详细说明: 1、sorted() 默认使用自然序排序, 其中的元素必须实现…