java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > java日期相减等于天数

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

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

您可能感兴趣的文章:
阅读全文