java用LocalDateTime类获取当天时间、前一天时间及本周/本月的开始和结束时间

 更新时间:2023年08月24日 10:43:38   作者:流连勿忘返  
这篇文章主要给大家介绍了关于java使用LocalDateTime类获取当天时间、前一天时间及本周/本月的开始和结束时间的相关资料,文中通过代码示例介绍的非常详细,需要的朋友可以参考下

1.直接上代码:

        // 获取当天日期
        LocalDate now = LocalDate.now();
        // 当天开始时间
        LocalDateTime todayStart = now.atStartOfDay();
        // 当天结束时间
        LocalDateTime todayEnd = LocalDateTime.of(now, LocalTime.MAX);
        // 周一
        LocalDate monday = now.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
        // 周日
        LocalDate sunday = now.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY));
        // 本周开始时间
        LocalDateTime weekStart = monday.atStartOfDay();
        // 本周结束时间
        LocalDateTime weekEnd = LocalDateTime.of(sunday, LocalTime.MAX);
        // 本月1号
        LocalDate firstDayOfMonth = now.with(TemporalAdjusters.firstDayOfMonth());
        // 本月最后一天
        LocalDate lastDayOfMonth = now.with(TemporalAdjusters.lastDayOfMonth());
        // 本月1号的开始时间
        LocalDateTime firstDayOfMonthStart = firstDayOfMonth.atStartOfDay();
        // 本月最后一天的最后时间
        LocalDateTime firstDayOfMonthEnd = LocalDateTime.of(lastDayOfMonth, LocalTime.MAX);
        // 今年第一天
        LocalDate beginTime = LocalDate.now().with(TemporalAdjusters.firstDayOfYear());
        // 今年最后一天
        LocalDate endTiime = LocalDate.now().with(TemporalAdjusters.lastDayOfYear());
        //获取前一天日期
        LocalDate yesterday2 = LocalDate.now().minusDays(1);
        DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        System.out.println("当天开始时间 = " + todayStart.format(pattern) + "  时间戳 :" + todayStart.toInstant(ZoneOffset.of("+8")).toEpochMilli());
        System.out.println("当天结束时间 = " + todayEnd.format(pattern) + "  时间戳 :" + todayEnd.toInstant(ZoneOffset.of("+8")).toEpochMilli());
        System.out.println("本周开始时间 = " + weekStart.format(pattern) + "  时间戳 :" + weekStart.toInstant(ZoneOffset.of("+8")).toEpochMilli());
        System.out.println("本周结束时间 = " + weekEnd.format(pattern) + "  时间戳 :" + weekEnd.toInstant(ZoneOffset.of("+8")).toEpochMilli());
        System.out.println("本月开始时间 = " + firstDayOfMonthStart.format(pattern) + "  时间戳 :" + firstDayOfMonthStart.toInstant(ZoneOffset.of("+8")).toEpochMilli());
        System.out.println("本月结束时间 = " + firstDayOfMonthEnd.format(pattern) + "  时间戳 :" + firstDayOfMonthEnd.toInstant(ZoneOffset.of("+8")).toEpochMilli());

2.当前时间减

LocalDate.now().minusYears(x);  //当前日期减去指定的年份
​​​​​​​LocalDate.now().minusMonths(x); //当前日期减去指定的月份
LocalDate.now().minusDays(x);   //当前日期减去指定的天数 
LocalDate.now().minusWeeks(x);  //当前日期减去指定的周数 

3.时间格式化

DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
//格式化
String str4 = formatter3.format(LocalDateTime.now());
System.out.println(str4);//2021-09-22 06:33:08
//解析
TemporalAccessor parse1 = formatter3.parse(str4);
System.out.println(parse1);//{NanoOfSecond=0, MilliOfSecond=0, MinuteOfHour=34, HourOfAmPm=6, SecondOfMinute=6, MicroOfSecond=0},ISO resolved to 2021-09-22
//解析
String dateString = "2023-07-13 15:30:00";
LocalDateTime dateTime = LocalDateTime.parse(dateString, formatter3);

注意:

DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");

这个 hh:mm:ss 跟HH:mm:ss的区别,如果采用24小时的话,要用HH,如果是:2023-07-27 23:59:59 这种,确用了 hh:mm:ss 这种格式,会报错

4.两个LocalDateTime.now()之间相差的天数

LocalDateTime start = LocalDateTime.of(2023, 6, 1, 0, 0, 0);
LocalDateTime end = LocalDateTime.of(2023, 6, 28, 0, 0, 0);
Duration duration = Duration.between(start, end);
long days = duration.toDays();
System.out.println(days); // 输出:27

总结

到此这篇关于java用LocalDateTime类获取当天时间、前一天时间及本周/本月的开始和结束时间的文章就介绍到这了,更多相关java LocalDateTime类获取时间内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java hibernate延迟加载get和load的区别

    Java hibernate延迟加载get和load的区别

    这篇文章主要介绍了Java hibernate延迟加载get和load的区别,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • 详解Java线程池如何统计线程空闲时间

    详解Java线程池如何统计线程空闲时间

    这篇文章主要和大家分享一个面试题:Java线程池是怎么统计线程空闲时间?文中的示例代码讲解详细,对我们掌握Java有一定帮助,需要的可以参考一下
    2022-11-11
  • SpringCloud Netfilx Ribbon负载均衡工具使用方法介绍

    SpringCloud Netfilx Ribbon负载均衡工具使用方法介绍

    Ribbon是Netflix的组件之一,负责注册中心的负载均衡,有助于控制HTTP和TCP客户端行为。Spring Cloud Netflix Ribbon一般配合Ribbon进行使用,利用在Eureka中读取的服务信息,在调用服务节点时合理进行负载
    2022-12-12
  • Java设计模式七大原则之接口隔离原则详解

    Java设计模式七大原则之接口隔离原则详解

    接口隔离原则(Interface Segregation Principle),又称为ISP原则,就是在一个类中不要定义过多的方法,接口应该尽量简单细化。本文将为大家具体介绍一下Java设计模式七大原则之一的接口隔离原则,需要的可以参考一下
    2022-02-02
  • java动态代理详解

    java动态代理详解

    本文章要用很土的语言描述Java动态代理,力求更易被理解。Java是JDK5中新加的机制,大家都知道Spring是用Java的动态代理实现的,那这个动态代理是什么东东呢,首先他肯定是个代理,我们先讲代理,把代理弄明白了,动态代理就好说了
    2014-02-02
  • spring-boot整合ehcache实现缓存机制的方法

    spring-boot整合ehcache实现缓存机制的方法

    spring-boot是一个快速的集成框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。这篇文章主要介绍了spring-boot整合ehcache实现缓存机制,需要的朋友可以参考下
    2018-01-01
  • java中char类型转换成int类型的2种方法

    java中char类型转换成int类型的2种方法

    这篇文章主要给大家介绍了关于java中char类型转换成int类型的2种方法,因为java是一门强类型语言,所以在数据运算中会存在类型转换,需要的朋友可以参考下
    2023-07-07
  • Java调用ChatGPT(基于SpringBoot和Vue)实现可连续对话和流式输出的ChatGPT API

    Java调用ChatGPT(基于SpringBoot和Vue)实现可连续对话和流式输出的ChatGPT API

    这篇文章主要介绍了Java调用ChatGPT(基于SpringBoot和Vue),实现可连续对话和流式输出的ChatGPT API(可自定义实现AI助手),文中代码示例介绍的非常详细,感兴趣的朋友可以参考下
    2023-04-04
  • Java实现的求逆矩阵算法示例

    Java实现的求逆矩阵算法示例

    这篇文章主要介绍了Java实现的求逆矩阵算法,涉及java基于数组的矩阵遍历与运算相关操作技巧,需要的朋友可以参考下
    2017-09-09
  • Java 反射类型Type的用法说明

    Java 反射类型Type的用法说明

    这篇文章主要介绍了Java 反射类型Type的用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05

最新评论