Java8 日期和时间类的基本使用

 更新时间:2020年08月25日 11:26:12   作者:龙海成  
这篇文章主要介绍了Java 日期和时间类的基本使用,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下

前言

最近在重构之前的一个老项目,其中包含一个统计模块,需要把存储在MongoDB的数据通过接口显示在后端管理系统中。这些数据大多是以时间为单位进行存储,例如:collectionName_202009collectionName_20200910,在老系统中对时间的处理使用Date类,简单了解了其中的时间工具类,深感繁琐并决定使用Java8中的LocalDateTime和LocalDate重构此代码。

基本使用

1.获取当前时间

// 2020-08-23T20:14:56.977
 LocalDateTime localDateTime = LocalDateTime.now();
 //2020-08-23
 LocalDate localDate = LocalDate.now();

2.格式化时间

LocalDateTime localDateTime = LocalDateTime.now();
 DateTimeFormatter localDateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.SIMPLIFIED_CHINESE);
 // 2020-08-23 20:20:29
 String timeStr = localDateTime.format(localDateTimeFormatter);

 LocalDate localDate = LocalDate.now();
 DateTimeFormatter localDateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
 // 2020-08-23
 String dateStr = localDate.format(localDateFormatter);

3.获取昨天、明天或者固定天数的时间

LocalDateTime localDateTime = LocalDateTime.now();
 DateTimeFormatter localDateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.SIMPLIFIED_CHINESE);
 // 今天
 String time = localDateTime.format(localDateTimeFormatter);
 // 昨天
 LocalDateTime yesterday = localDateTime.minusDays(1L);
 String yesterdayStr = yesterday.format(localDateTimeFormatter);
 // 后天
 LocalDateTime tomorrow = localDateTime.plusDays(1L);
 String tomorrowStr = tomorrow.format(localDateTimeFormatter);
 // 天数加5
 LocalDateTime timePlus = localDateTime.plusDays(5L);
 String timePlusStr = timePlus.format(localDateTimeFormatter);
 // 天数减5
 LocalDateTime timeMinus = localDateTime.minusDays(5L);
 String timeMinusStr = timeMinus.format(localDateTimeFormatter);

在LocalDateTime的API中包含了对各个时间单位的增加和减少,如:

4.获取今天的开始时间和结束时间,精确到秒

DateTimeFormatter localDateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.SIMPLIFIED_CHINESE);
 // 2020-08-23 00:00:00
 String start = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).format(localDateTimeFormatter);
 // 2020-08-23 23:59:59
 String end = LocalDateTime.of(LocalDate.now(), LocalTime.MAX).format(localDateTimeFormatter);
 // 这里的LocalDate.now()表示获取今天的开始时间和结束时间,也可以换做任何一天

5.获取当月的第一天和最后一天

// 这里使用LocalDate来获取日期
 DateTimeFormatter localDateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.SIMPLIFIED_CHINESE);
 LocalDate localDate = LocalDate.now();
 LocalDate firstDay = localDate.with(TemporalAdjusters.firstDayOfMonth());
 LocalDate lastDay = localDate.with(TemporalAdjusters.lastDayOfMonth());

6.将时间字符串转为时间或日期

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.SIMPLIFIED_CHINESE);
 String str = "2018-08-09 20:10:10";
 LocalDateTime localDateTime = LocalDateTime.parse(str, formatter);
 LocalDate localDate = LocalDate.parse(str, formatter);

7.计算日期间隔

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.SIMPLIFIED_CHINESE);
 String str = "2020-09-02";
 LocalDate localDate = LocalDate.parse(str, formatter);
 long until = LocalDate.now().until(localDate, ChronoUnit.DAYS);

以上就是Java8 日期和时间类的基本使用的详细内容,更多关于Java 日期和时间类的资料请关注脚本之家其它相关文章!

相关文章

  • logback的使用和logback.xml详解(小结)

    logback的使用和logback.xml详解(小结)

    Logback是由log4j创始人设计的另一个开源日志组件,这篇文章主要介绍了logback的使用和logback.xml详解(小结),非常具有实用价值,需要的朋友可以参考下
    2018-11-11
  • Java将本地项目部署到Linux服务器的实践

    Java将本地项目部署到Linux服务器的实践

    本文主要介绍了Java将本地项目部署到Linux服务器的实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>
    2022-06-06
  • 基于Spring定时任务的fixedRate和fixedDelay的区别

    基于Spring定时任务的fixedRate和fixedDelay的区别

    这篇文章主要介绍了基于Spring定时任务的fixedRate和fixedDelay的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • 基于java解析JSON的三种方式详解

    基于java解析JSON的三种方式详解

    这篇文章主要介绍了基于java解析JSON的三种方式,结合实例形式详细分析了json解析的原理与GSON、FastJSON等常用解析操作技巧,需要的朋友可以参考下
    2016-12-12
  • java DOM4J 读取XML实例代码

    java DOM4J 读取XML实例代码

    最近学习Java,在处理XML文档的时候,查阅相关资料,发现了DOM4J这个jre库,相对C#的XML处理来说,功能还算是跟得
    2013-09-09
  • 讲解ssm框架整合(最通俗易懂)

    讲解ssm框架整合(最通俗易懂)

    这篇文章主要介绍了讲解ssm框架整合(最通俗易懂),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java压缩文件ZIP实例代码

    Java压缩文件ZIP实例代码

    这篇文章主要介绍了Java压缩文件ZIP实例代码,有需要的朋友可以参考一下
    2013-12-12
  • Gateway实现限流的一些常见方式

    Gateway实现限流的一些常见方式

    文章介绍了如何在SpringCloudGateway中实现限流,包括基于请求次数、令牌桶算法、IP地址和时间窗口等多种限流策略,通过配置RequestRateLimiter过滤器和KeyResolver,可以灵活地控制不同来源的请求频率,确保系统稳定性和可用性,感兴趣的朋友一起看看吧
    2025-02-02
  • springBoot整合redis做缓存具体操作步骤

    springBoot整合redis做缓存具体操作步骤

    缓存主要是将数据存在计算机的内存当中,以便于在使用的时候是可以实现快速读取使用,它的快也是相对于硬盘读取而言,这篇文章主要给大家介绍了关于springBoot整合redis做缓存的具体操作步骤,需要的朋友可以参考下
    2024-04-04
  • SpringBoot3中数据库集成实践详解

    SpringBoot3中数据库集成实践详解

    项目工程中,集成数据库实现对数据的增晒改查管理,是最基础的能力,所以下面小编就来和大家讲讲SpringBoot3如何实现数据库集成,需要的可以参考下
    2023-08-08

最新评论