Java如何利用LocalDate获取某个月的第一天与最后一天日期

目录
  • 问题描述:
  • 使用TemporalAdjusters方法实现
  • 使用getDayOfMonth()方法实现
  • 补充:使用LocalDateTime也可以实现相关功能
  • java获取指定日期当月和下个月的第一天
  • 总结

问题描述:

以一个月为周期进行查询时,如果用户没有选择查询的月份,我们想要默认查询当月或上个月的数据,这时,如何获取到一个月的第一天和最后一天日期呢?

以下介绍两种方式采用LocalDate格式日期的实现,以及采用LocalDateTime格式日期的实现。直接上代码!

使用TemporalAdjusters方法实现

获取当前月的第一天和最后一天

LocalDate date = LocalDate.now();
LocalDate firstDay = date.with(TemporalAdjusters.firstDayOfMonth()); // 获取当前月的第一天
LocalDate lastDay = date.with(TemporalAdjusters.lastDayOfMonth()); // 获取当前月的最后一天
System.out.println(date);
System.out.println(firstDay);
System.out.println(lastDay);

输出结果为:

2021-11-11
2021-11-01
2021-11-30

获取上个月的第一天和最后一天

LocalDate date = LocalDate.now();
LocalDate lastMonth = date.minusMonths(1); // 当前月份减1
LocalDate firstDay = lastMonth.with(TemporalAdjusters.firstDayOfMonth()); // 获取当前月的第一天
LocalDate lastDay = lastMonth.with(TemporalAdjusters.lastDayOfMonth()); // 获取当前月的最后一天
System.out.println(day);
System.out.println(lastMonth);
System.out.println(firstDay);
System.out.println(lastDay);

输出结果为:

2021-11-11
2021-10-11
2021-10-01
2021-10-31

测试:获取指定月的上个月的第一天和最后一天

LocalDate date = LocalDate.of(2021, 3, 14);
LocalDate lastMonth = date.minusMonths(1); // 当前月份减1
LocalDate firstDay = lastMonth.with(TemporalAdjusters.firstDayOfMonth()); // 获取当前月的第一天
LocalDate lastDay = lastMonth.with(TemporalAdjusters.lastDayOfMonth()); // 获取当前月的最后一天
System.out.println(day);
System.out.println(lastMonth);
System.out.println(firstDay);
System.out.println(lastDay);

输出结果为:

2021-03-14
2021-02-14
2021-02-01
2021-02-28

注意事项

大家在调用LocalDate的 TemporalAdjusters 方法时,一定注意不要漏了最后的 ‘s’, 博主一开始傻fufu的用 TemporalAdjuster 怎么也调不到 firstDayOfMonth() 和 lastDayOfMonth() 【破涕为笑.jpg】

使用getDayOfMonth()方法实现

LocalDate date = LocalDate.of(2021, 8, 8);
LocalDate lastMonthEnd = date.minusDays(-date.getDayOfMonth()); // 日期date减去这个月已有的天数,得到上个月的最后一天
LocalDate lastMonthBegin = LocalDate.of(lastMonthEnd.getYear(), lastMonthEnd.getMonthValue(), 1); // 通过上一步得到的上个月的最后一天,得到上个月的第一天
System.out.println(date);
System.out.println(lastMonthBegin);
System.out.println(lastMonthEnd);

输出结果为:

2021-08-08
2021-07-01
2021-07-31

以上就是用两种方法实现获取某个月的第一天和最后一天啦~ 看大家觉得那个好理解或者好用~

补充:使用LocalDateTime也可以实现相关功能

LocalDateTime date = LocalDateTime.now();
LocalDateTime firstday = date.with(TemporalAdjusters.firstDayOfMonth());
LocalDateTime lastDay = date.with(TemporalAdjusters.lastDayOfMonth());

java获取指定日期当月和下个月的第一天

/**
  * 获取指定日期当月的第一天
  * @param dateStr
  * @param format
  * @return
  */
 public static String getFirstDayOfGivenMonth(String dateStr,String format){undefined
 SimpleDateFormat sdf = new SimpleDateFormat(format);
 try {undefined
 Date date = sdf.parse(dateStr);
 Calendar calendar = Calendar.getInstance();
 calendar.setTime(date);
 calendar.set(Calendar.DAY_OF_MONTH,1);
 calendar.add(Calendar.MONTH, 0);
 return sdf.format(calendar.getTime());
 } catch (ParseException e) {undefined
 e.printStackTrace();
 }
 return null;
 }

/**

  * 获取指定日期下个月的第一天
  * @param dateStr
  * @param format
  * @return
  */
 public static String getFirstDayOfNextMonth(String dateStr,String format){
 SimpleDateFormat sdf = new SimpleDateFormat(format);
 try {
 Date date = sdf.parse(dateStr);
 Calendar calendar = Calendar.getInstance();
 calendar.setTime(date);
 calendar.set(Calendar.DAY_OF_MONTH,1);
 calendar.add(Calendar.MONTH, 1);
 return sdf.format(calendar.getTime());
 } catch (ParseException e) {
 e.printStackTrace();
 }
 return null;
 }

总结

到此这篇关于Java如何利用LocalDate获取某个月的第一天与最后一天日期的文章就介绍到这了,更多相关Java利用LocalDate获取日期内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • mybatis如何使用Java8的日期LocalDate和LocalDateTime详解

    前言 相信大家应该都知道,在实体Entity里面,可以使用java.sql.Date.java.sql.Timestamp.java.util.Date来映射到数据库的date.timestamp.datetime等字段 但是,java.sql.Date.java.sql.Timestamp.java.util.Date这些类都不好用,很多方法都过时了. Java8里面新出来了一些API,LocalDate.LocalTime.LocalDateTime 非常好用 默认的情况下,在mybatis

  • Java8使用LocalDate计算日期实例代码解析

    最近项目遇到一个需要计算两个日期间隔的期限,需要计算出,整年整月整日这样符合日常习惯的说法,利用之前的Date和Calendar类会有点复杂,刚好项目使用了JDK8,那就利用起来这个新特性,上代码: public static String getTerm(String startTime, String endTime) { String term = ""; if (startTime.length() != 8 || endTime.length() != 8) { return

  • Java中使用LocalDate根据日期来计算年龄的实现方法

    Java中和日期直接相关的类有很多,平时最常用到的就是java.util package下面的Date和Calendar,需要用到格式的时候还会用到java.text.SimpleDateFormat 首先吐槽一下,Date和Calendar实际用起来还是有一些别扭的,刚开始用的时候不熟悉,老是分不清Date和Calendar类的具体用法和区别. 而且Calendar类的set方法来设置日期时又有一些反人类,设置月份的时候总是要脑补一下减去1,比如要设置为2018年1月6日就要设置成2018,0

  • JDBC中使用Java8的日期LocalDate和LocalDateTime操作mysql、postgresql

    前言 相信大家应该都知道,在实体Entity里面,可以使用java.sql.Date.java.sql.Timestamp.java.util.Date来映射到数据库的date.timestamp.datetime等字段 但是,java.sql.Date.java.sql.Timestamp.java.util.Date这些类都不好用,很多方法都过时了. Java8里面新出来了一些API,LocalDate.LocalTime.LocalDateTime 非常好用 如果想要在JDBC中,使用Ja

  • Java8 LocalDateTime极简时间日期操作小结

    简述 时间日期处理是平时工作中使用非常频繁的逻辑,Java8中提供的新的时间类LocalDateTime和LocalDate,使日期处理可以更简单. 友情提醒下,业务开发中最好默认使用LocalDateTime,因为LocalDateTime可以很方便的转换为LocalDate,但是LocalDate是不可以转为LocalDateTime的,会没有时分秒的数据!!! 本篇文章整理了常用的日期处理获取方式,并做简要说明. 能写一行的,就不写两行!文章会持续更新. 实例 1.获取当前年月日的字符串

  • 解决Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题

    LocalDate . LocalTime . LocalDateTime 是Java 8开始提供的时间日期API,主要用来优化Java 8以前对于时间日期的处理操作.然而,我们在使用Spring Boot或使用Spring Cloud Feign的时候,往往会发现使用请求参数或返回结果中有 LocalDate . LocalTime . LocalDateTime 的时候会发生各种问题.本文我们就来说说这种情况下出现的问题,以及如何解决. 问题现象 先来看看症状.比如下面的例子: @Sprin

  • Java如何利用LocalDate获取某个月的第一天与最后一天日期

    目录 问题描述: 使用TemporalAdjusters方法实现 使用getDayOfMonth()方法实现 补充:使用LocalDateTime也可以实现相关功能 java获取指定日期当月和下个月的第一天 总结 问题描述: 以一个月为周期进行查询时,如果用户没有选择查询的月份,我们想要默认查询当月或上个月的数据,这时,如何获取到一个月的第一天和最后一天日期呢? 以下介绍两种方式采用LocalDate格式日期的实现,以及采用LocalDateTime格式日期的实现.直接上代码! 使用Tempor

  • PHP获取某个月最大天数(最后一天)的方法

    本文实例讲述了PHP获取某个月最大天数(最后一天)的方法.分享给大家供大家参考.具体如下: //获取 某个月的最大天数(最后一天) function getMonthLastDay($month, $year) { switch ($month) { case 4 : case 6 : case 9 : case 11 : $days = 30; break; case 2 : if ($year % 4 == 0) { if ($year % 100 == 0) { $days = $year

  • php 获取一个月第一天与最后一天的代码

    复制代码 代码如下: function getthemonth($date) { $firstday = date('Y-m-01', strtotime($date)); $lastday = date('Y-m-d', strtotime("$firstday +1 month -1 day")); return array($firstday, $lastday); }

  • Java利用LocalDate类实现日历设计

    目录 前言 语法 日历实战 步骤分解 完整代码 结论 LocalDate API 前言 在我们完成这个日历设计前,需要了解Java中的预定义类LocalDate的一些用法 语法 LocalDate.now() // 2022-07-01 会构造一个新对象,表示构造这个对象时的日期. LocalDate.of(1999, 1, 1) 可以提供年.月和日来构造对应一个特定日期的对象: 当然,通常我们都希望将构造的对象保存在一个对象变量中: LocalDate newYearsEve = LocalD

  • 利用反射获取Java类中的静态变量名及变量值的简单实例

    JAVA可以通过反射获取成员变量和静态变量的名称,局部变量就不太可能拿到了. public class Test { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub //获取所有变量的值 Class clazz = Class.forName("com.qianmingxs.ScoreTable"); Field[] fields = clazz.g

  • Java利用反射获取object的属性和值代码示例

    在看反射顺便做个笔记,目前知道的反射的Object都是要有对象的也就是实体Bean. referance:Java反射简易教程 import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 反射处理Bean,得到里面的属性值 * * @author liulinsen * */ publ

  • Java实现获取某年某月第一天/最后一天的方法

    本文实例讲述了Java实现获取某年某月第一天/最后一天的方法.分享给大家供大家参考,具体如下: Java获取某年某月的第一天 设计源码 FisrtDayOfMonth.java: /** * @Title:FisrtDayOfMonth.java * @Package:com.you.freemarker.model * @Description:获取某年某月的第一天 * @author:Youhaidong(游海东) * @version V1.0 */ package com.you.fre

  • java 利用反射获取内部类静态成员变量的值操作

    昨晚,一同事问到我,怎么利用java反射解析内部类静态成员变量的值,于是顺手写下了. 废话不多说,直接上代码! 待解析类结构如下: /** * @Author changle * @Time 17/6/13. * @Desc to do */ public class Goods { static class apple{ public static String version = "iphone6s[是手机不是吃的苹果]"; public static String date =

  • Java OpenCV利用KNN算法实现图像背景移除

    目录 实现步骤 示例代码 结果图 实现步骤 1 获取视频 2 设置形态学结构 3 创建 Video.createBackgroundSubtractorKNN() 4 提取模型 BS 5 进行形态学变换 6 膨胀 7 二值化 8 展示结果 示例代码 package com.xu.opencv; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Optional

随机推荐