Java – Get Different Days Between Two Days

If you are looking for how to get different days between two days in Java, this post will show you a simple way for getting it.

To do this in Java, we simply minus two days. Let’s take a look into the below code example for more details.

Example.java
package com.bytenota;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Example {
    
    public static String DATE_FORMAT = "yyyy-MM-dd";
    
    public static void main(String[] args) throws Exception {
        
        // convert date string to Date object
        Date date1 = (new SimpleDateFormat(DATE_FORMAT)).parse("2022-01-01");
        Date date2 = (new SimpleDateFormat(DATE_FORMAT)).parse("2022-01-16");
        
        // get different days between date1 and date 2
        long diff = date1.getTime() - date2.getTime();
        long days = (diff / (1000*60*60*24));
        int diffDays = Math.abs((int) days);
        
        System.out.println(diffDays); // output: 15
    }
}

In the above code example, we convert to Date object from string using SimpleDateFormat, then minus date1 and date2 to get different days.

For reuse, we can move it to a helper class:

Example.java
package com.bytenota;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTimeHelper {
    
    // method 1: input are in date string
    public static int getDiffDaysFromDateString(String dateStr1, String dateStr2, String dateFormat) throws ParseException {
        Date date1 = convertStringToDate(dateStr1, dateFormat);
        Date date2 = convertStringToDate(dateStr2, dateFormat);
        
        long diff = date1.getTime() - date2.getTime();
        long days = (diff / (1000*60*60*24));
        int diffDays = Math.abs((int) days);
        return diffDays;
    }
    
    // method 2: input are in Date object
    public static int getDiffDaysFromDateObject(Date date1, Date date2) throws ParseException {
        long diff = date1.getTime() - date2.getTime();
        long days = (diff / (1000*60*60*24));
        int diffDays = Math.abs((int) days);
        return diffDays;
    }
    
    // convert string to Date object
    public static Date convertStringToDate(String strDate, String dateFormat) throws ParseException {
        Date date = (new SimpleDateFormat(dateFormat)).parse(strDate);
        return date;
    }
}

Then we can use our DateTimeHelper class in other classes:

AnotherExample.java
package com.bytenota;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class AnotherExample {
    
    public static String DATE_FORMAT = "yyyy-MM-dd";
   
    public static void main(String[] args) throws Exception {
        // test helper class
        int diffDays = DateTimeHelper.getDiffDaysFromDateString("2022-01-01", "2022-01-20", DATE_FORMAT);
        System.out.println(diffDays); // output: 19
    }
}