java计算两个字符串日期的相差天数【jdk8新特性LocalDateTime和Hutool两种方式实现】

简介: java计算两个字符串日期的相差天数【jdk8新特性LocalDateTime和Hutool两种方式实现】

java计算两个字符串日期的相差天数【jdk8新特性LocalDateTime和Hutool两种方式实现】


一、前言

我们在开发过程中,必不可少的就是对字符串日期的操作,特别是求相差天数。搜了一下大部分都是使用Calendar来进行计算的,今天我们来介绍两种比较好的方法。

  • hutool
  • jkd8新特性LocalDateTime

二、Hutool实现

1. 导入maven

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.7.18</version>
</dependency>

2. 实现方法

public static long compareTime(String dateStr1,String dateStr2){
    Date date1 = DateUtil.parse(dateStr1);
    Date date2 = DateUtil.parse(dateStr2);
    return DateUtil.between(date1, date2, DateUnit.DAY);
}

3. 测试

public static void main(String[] args) {
  String dateStr1 = "2021-01-01";
    String dateStr2 = "2021-01-05";
    long compareTime = compareTime(dateStr1, dateStr2);//4
}

三、jkd8新特性LocalDateTime实现

1. API了解

对于LocalDate,只有精度大于或等于日的加减,如年、月、日;

对于LocalTime,只有精度小于或等于时的加减,如时、分、秒、纳秒;

对于LocalDateTime,则可以进行任意精度的时间相加减;

2. 测试

  String dateStr1 = "2021-01-01";
    String dateStr2 = "2021-01-05";
    LocalDate parse = LocalDate.parse(dateStr1);
    LocalDate parse1 = LocalDate.parse(dateStr2);
    long between = ChronoUnit.DAYS.between(parse, parse1);//4

四、总结

这样我们使用两种比较简单的方式实现了计算两个字符串日期的相差天数,觉得有用收藏,下次方便查看哦!!

相关文章
|
2月前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
144 83
|
2月前
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
112 60
|
2月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
60 26
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
65 8
|
2月前
|
Oracle 安全 Java
深入理解Java生态:JDK与JVM的区分与协作
Java作为一种广泛使用的编程语言,其生态中有两个核心组件:JDK(Java Development Kit)和JVM(Java Virtual Machine)。本文将深入探讨这两个组件的区别、联系以及它们在Java开发和运行中的作用。
92 1
|
2月前
|
安全 Java API
告别SimpleDateFormat:Java 8日期时间API的最佳实践
在Java开发中,处理日期和时间是一个基本而重要的任务。传统的`SimpleDateFormat`类因其简单易用而被广泛采用,但它存在一些潜在的问题,尤其是在多线程环境下。本文将探讨`SimpleDateFormat`的局限性,并介绍Java 8引入的新的日期时间API,以及如何使用这些新工具来避免潜在的风险。
40 5
|
2月前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
85 1
|
2月前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
53 6
|
3月前
|
Java Spring 数据库连接
[Java]代理模式
本文介绍了代理模式及其分类,包括静态代理和动态代理。静态代理分为面向接口和面向继承两种形式,分别通过手动创建代理类实现;动态代理则利用反射技术,在运行时动态创建代理对象,分为JDK动态代理和Cglib动态代理。文中通过具体代码示例详细讲解了各种代理模式的实现方式和应用场景。
44 0
[Java]代理模式
|
3月前
|
Java
Java基础之 JDK8 HashMap 源码分析(中间写出与JDK7的区别)
这篇文章详细分析了Java中HashMap的源码,包括JDK8与JDK7的区别、构造函数、put和get方法的实现,以及位运算法的应用,并讨论了JDK8中的优化,如链表转红黑树的阈值和扩容机制。
43 1