Java实现两个日期相减等于天数

 更新时间:2023年09月05日 10:37:27   作者:Live a happy life  
这篇文章主要介绍了Java两个日期相减等于天数的实现方式,本文通过两种方式结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

需求

根据当前时间 如:2020-10-13 减去过去的某一天 如:2020-09-30

实现

方式一

      // 定义项目进行天数
      long Days = 0;
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
      try {
          long time = sdf.parse("2021-01-19").getTime();
          long time1 = sdf.parse("2020-10-12")
              .getTime();
          Days = (int) ((time -time1) /(24
                        * 60 * 60 * 1000));
              } catch (ParseException e) {
          e.printStackTrace();
        }

方式二

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Calendar;
public class TestDay {
    public static void main(String[] args) {
        String dateStr1 = "2020-09-30";
        String dateStr2 = "2021-01-12";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
        try {
            dateStr1 = sdf.format(sdf2.parse(dateStr1));
            dateStr2 = sdf.format(sdf2.parse(dateStr2));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        long time1 = time(dateStr1);
        long time2 = time(dateStr2);
        // 相减得出的天数mills
        long mills = time1> time2
                ? time1 - time2
                        : time2 - time1;
        System.out.println((int) (mills / 1000 / 3600 / 24));
    }
    // 封装截取字符串
    public  static long time(String times){
        int year = Integer.parseInt(times.substring(0, 4));
        int month = Integer.parseInt(times.substring(4, 6));
        int day = Integer.parseInt(times.substring(6, 8));
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month - 1);
        c.set(Calendar.DAY_OF_MONTH, day);
        return (c.getTimeInMillis());
    }
}

注意

以上两种方式实现都可以,可以试着尝试一下,自己偏向第一种,代码少嘛,自己犯了一个不改犯的问题,导致排查了半天。自己定义yyyy-mm-dd ,mm小写,导致出现负数的情况,在转化的时候出现的问题,M与m的区别 区分 月和分,如:yyyy-MM-dd HH:mm:ss;

      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
      // 自己定义yyyy-mm-dd ,mm小写,导致出现负数的情况,M与m的区别 区分 月和分,如:yyyy-MM-dd HH:mm:ss;
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");

到此这篇关于Java两个日期相减等于天数的文章就介绍到这了,更多相关java日期相减等于天数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java中javamail收发邮件实现方法

    java中javamail收发邮件实现方法

    这篇文章主要为大家详细介绍了java中javamail收发邮件实现方法,实例分析了javamail的使用方法与相关注意事项,非常具有实用价值,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Mybatis使用distinct问题及处理

    Mybatis使用distinct问题及处理

    Mybatis使用distinct查询时,插件自动生成的sql可能少去掉一行,导致查询不到期望的结果,修复方法是在生成的sql中去掉"Base_Column_List"
    2025-12-12
  • Java全面细致讲解类与对象

    Java全面细致讲解类与对象

    类和对象是两种以计算机为载体的计算机语言的合称。对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型;变量就是可以变化的量,存储在内存中—个可以拥有在某个范围内的可变存储区域
    2022-05-05
  • Idea热加载插件JRebel激活以及使用教程

    Idea热加载插件JRebel激活以及使用教程

    JRebel是一款JVM插件,它使得Java代码修改后不用重启系统,立即生效,下面这篇文章主要给大家介绍了关于Idea热加载插件JRebel激活以及使用的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • Java使用wait() notify()方法操作共享资源详解

    Java使用wait() notify()方法操作共享资源详解

    这篇文章主要为大家详细介绍了Java使用wait() notify()方法操作共享资源,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 详细总结Java堆栈内存、堆外内存、零拷贝浅析与代码实现

    详细总结Java堆栈内存、堆外内存、零拷贝浅析与代码实现

    零拷贝,这是个耳熟能详的名词,是开发岗面试中经常提及的问题.最近在回顾Netty的基础原理,还是把NIO中关于堆外内存的知识点过了一遍,这里就针对堆栈内存 堆外内存和零拷贝这几个概念以及相关知识做一下记录,需要的朋友可以参考下
    2021-05-05
  • Java常用的八种排序算法与代码实现

    Java常用的八种排序算法与代码实现

    这篇文章主要给给大家分享Java常用的八种排序算法与代码实现,下面文章将详细介绍整个实现过程,感兴趣的小伙伙伴可以跟着小编一起来学习,希望对你有所帮助
    2021-10-10
  • 带你了解Java中Static关键字的用法

    带你了解Java中Static关键字的用法

    这篇文章主要介绍了JAVA Static关键字的用法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下,希望能给你带来帮助
    2021-08-08
  • Java -jar命令如何运行外部依赖JAR包

    Java -jar命令如何运行外部依赖JAR包

    在Java应用部署中,java -jar命令是启动可执行JAR包的标准方式,但当应用需要依赖外部JAR文件时,直接使用java -jar会面临类加载困境,本文就来聊聊该如何解决吧
    2025-06-06
  • JAVA module-info.java文件详解

    JAVA module-info.java文件详解

    这篇文章主要介绍了JAVA module-info.java文件详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01

最新评论