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日期相减等于天数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • ArrayList和JSONArray边遍历边删除到底该如何做

    ArrayList和JSONArray边遍历边删除到底该如何做

    这篇文章主要介绍了ArrayList和JSONArray边遍历边删除到底该如何做,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Unicode、UTF-8 和 ISO8859-1区别解析

    Unicode、UTF-8 和 ISO8859-1区别解析

    这篇文章主要介绍了Unicode、UTF-8 和 ISO8859-1到底有什么区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-01-01
  • java中建立0-10m的消息(字符串)实现方法

    java中建立0-10m的消息(字符串)实现方法

    下面小编就为大家带来一篇java中建立0-10m的消息(字符串)实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Java实例讲解反射机制是怎么一回事

    Java实例讲解反射机制是怎么一回事

    Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法
    2022-03-03
  • SpringBoot和Tomcat的关系解读

    SpringBoot和Tomcat的关系解读

    这篇文章主要介绍了SpringBoot和Tomcat的关系,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • SpringMVC之@requestBody的作用及说明

    SpringMVC之@requestBody的作用及说明

    这篇文章主要介绍了SpringMVC之@requestBody的作用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • SpringSecurity多表多端账户登录的实现

    SpringSecurity多表多端账户登录的实现

    本文主要介绍了SpringSecurity多表多端账户登录的实现
    2024-05-05
  • 如何在spring boot项目中使用Spring Security的BCryptPasswordEncoder类进行相同密码不同密文的加密和验证

    如何在spring boot项目中使用Spring Security的BCryptPasswordE

    本文介绍如何在Spring Boot项目中通过修改pom.xml引入安全依赖,添加配置类以解除默认的HTTP请求拦截,以及如何创建BCryptPasswordEncoder对象进行密码的加密和匹配,通过这些步骤,可以有效地增强应用的安全性
    2023-08-08
  • java开发时各类工具的使用规范

    java开发时各类工具的使用规范

    这篇文章主要介绍了java编码时各类工具的使用规范,多人协作、共同开发一个项目,如果没有统一的代码规范的话,项目中的每个人都按照自己的习惯率性而为,就会导致整个项目的代码看上去杂乱无章,可读性非常差,并且持续增加后续的维护成本。对此感兴趣可以来了解一下
    2020-07-07
  • Spring设计模式中代理模式详细讲解

    Spring设计模式中代理模式详细讲解

    如何实现在不修改源码的基础上实现代码功能的增强呢?spring为我们提供了代理模式。所谓的代理模式通俗来说就是一个中介,它给某一个对象提供一个代理对象,并由代理对象控制原对象的引用,从而实现在不修改源码的基础上实现代码功能的增强
    2023-01-01

最新评论