Core Java

Date Check Equals Yesterday

When handling date and time information in Java applications, it’s frequently essential to assess dates for different reasons like scheduling tasks, setting reminders, or generating reports. A typical situation arises when determining if a provided date represents yesterday compared to the current date. Let’s explore the process of how to check a Date to yesterday.

1. Using java.util.Calendar

Below is an example of using the java.util.Calendar to check if a Date object corresponds to yesterday.

package com.jcg.example;

import java.util.Calendar;
import java.util.Date;

public class YesterdayChecker {
    public static void main(String[] args) {
        // Create a Date object representing the current date and time
        Date currentDate = new Date();

        // Create a Calendar object and set it to the current date
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(currentDate);

        // Subtract one day from the current date
        calendar.add(Calendar.DAY_OF_YEAR, -1);

        // Get the date representing yesterday
        Date yesterdayDate = calendar.getTime();

        // Create another Date object for demonstration purposes
        Date someDate = new Date();

        // Check if someDate is equal to yesterdayDate
        if (someDate.equals(yesterdayDate)) {
            System.out.println("someDate is equal to yesterdayDate.");
        } else {
            System.out.println("someDate is not equal to yesterdayDate.");
        }
    }
}

1.1 Code Explanation

This Java code defines:

  • Import Statements: Import necessary classes from java.util package.
  • Main Class: Define a class named YesterdayChecker.
  • Main Method: Define the main method where the execution of the program begins.
  • Current Date Object: Create a Date object currentDate representing the current date and time.
  • Calendar Instance: Create a Calendar object calendar using the getInstance() method and set it to the current date using setTime() method.
  • Subtract One Day: Subtract one day from the current date using add() method with Calendar.DAY_OF_YEAR field.
  • Yesterday Date Object: Get the date representing yesterday using getTime() method.
  • Some Date Object: Create another Date object someDate for demonstration purposes.
  • Comparison: Check if someDate is equal to yesterdayDate using the equals() method.
  • Output: Print the result of the comparison.

1.2 Code Output

When you run the above Java code, it will produce the following output:

someDate is not equal to yesterdayDate.

2. Using java.util.Date Milliseconds

Below is an example to check if a Date object equals yesterday using milliseconds.

package com.jcg.example;

import java.util.Date;

public class YesterdayChecker {
    public static void main(String[] args) {
        // Create a Date object representing the current date and time
        Date currentDate = new Date();

        // Calculate milliseconds for one day
        long oneDayMillis = 24 * 60 * 60 * 1000;

        // Calculate milliseconds for yesterday
        long yesterdayMillis = currentDate.getTime() - oneDayMillis;

        // Create a Date object representing yesterday
        Date yesterdayDate = new Date(yesterdayMillis);

        // Create another Date object for demonstration purposes
        Date someDate = new Date();

        // Check if someDate is equal to yesterdayDate
        if (someDate.equals(yesterdayDate)) {
            System.out.println("someDate is equal to yesterdayDate.");
        } else {
            System.out.println("someDate is not equal to yesterdayDate.");
        }
    }
}

2.1 Code Explanation

This Java code defines:

  • Current Date Object: Create a Date object currentDate representing the current date and time.
  • Calculate Milliseconds for One Day: Calculate the number of milliseconds in one day.
  • Calculate Milliseconds for Yesterday: Subtract the milliseconds for one day from the current date’s milliseconds to obtain yesterday’s milliseconds.
  • Yesterday Date Object: Create a new Date object yesterdayDate using the calculated milliseconds for yesterday.
  • Some Date Object: Create another Date object someDate for demonstration purposes.
  • Comparison: Check if someDate is equal to yesterdayDate.

2.2 Code Output

When you run the above Java code, it will produce the following output:

someDate is not equal to yesterdayDate.

3. Using java.time.LocalDate

Below is an example to check if a Date object equals yesterday using java.time.LocalDate.

package com.jcg.example;

import java.time.LocalDate;

public class YesterdayChecker {
    public static void main(String[] args) {
        // Get the current date
        LocalDate currentDate = LocalDate.now();

        // Get yesterday's date
        LocalDate yesterdayDate = currentDate.minusDays(1);

        // Create another date object for demonstration purposes
        LocalDate someDate = LocalDate.now();

        // Check if someDate is equal to yesterdayDate
        if (someDate.equals(yesterdayDate)) {
            System.out.println("someDate is equal to yesterdayDate.");
        } else {
            System.out.println("someDate is not equal to yesterdayDate.");
        }
    }
}

3.1 Code Explanation

This Java code defines:

  • Current Date Object: Get the current date using LocalDate.now().
  • Yesterday’s Date Object: Get yesterday’s date by subtracting one day from the current date using minusDays(1).
  • Some Date Object: Create another LocalDate object someDate for demonstration purposes.
  • Comparison: Check if someDate is equal to yesterdayDate.

3.2 Code Output

When you run the above Java code, it will produce the following output:

someDate is not equal to yesterdayDate.

4. Using Joda-Time

Below is an example to check if a Date object equals yesterday using Joda-Time.

package com.jcg.example;

import org.joda.time.DateTime;
import org.joda.time.LocalDate;

public class YesterdayChecker {
    public static void main(String[] args) {
        // Get the current date
        LocalDate currentDate = LocalDate.now();

        // Get yesterday's date
        LocalDate yesterdayDate = currentDate.minusDays(1);

        // Create another date object for demonstration purposes
        LocalDate someDate = LocalDate.now();

        // Check if someDate is equal to yesterdayDate
        if (someDate.equals(yesterdayDate)) {
            System.out.println("someDate is equal to yesterdayDate.");
        } else {
            System.out.println("someDate is not equal to yesterdayDate.");
        }
    }
}

4.1 Code Explanation

This Java code defines:

  • Import Statements: Import Joda-Time classes for handling date and time.
  • Current Date Object: Get the current date using LocalDate.now().
  • Yesterday’s Date Object: Get yesterday’s date by subtracting one day from the current date using minusDays(1).
  • Some Date Object: Create another LocalDate object someDate for demonstration purposes.
  • Comparison: Check if someDate is equal to yesterdayDate.

4.2 Code Output

When you run the above Java code, it will produce the following output:

someDate is not equal to yesterdayDate.

5. Conclusion

In conclusion, we explored four different approaches to check if a date object equals yesterday in Java:

  • Using java.util.Calendar: This traditional approach involves creating a Calendar instance, manipulating it to represent yesterday’s date, and comparing it with the target date. While effective, it requires more lines of code and can be prone to errors due to its complexity.
  • Using java.util.Date Milliseconds: This method utilizes the millisecond representation of dates, subtracting the milliseconds corresponding to one day from the current date’s milliseconds to obtain yesterday’s date. Although it’s straightforward, it relies on the legacy java.util.Date class, which has been mostly replaced by java.time.
  • Using java.time.LocalDate: Introduced in Java 8, the java.time package provides a modern and more intuitive way to handle dates and times. Here, we used LocalDate to obtain yesterday’s date by simply subtracting one day from the current date. This approach is concise, readable, and offers better support for date manipulation.
  • Using Joda-Time: Before the introduction of java.time, Joda-Time was the de facto standard for date and time manipulation in Java. Similar to java.time.LocalDate, we used Joda-Time’s LocalDate class to achieve the same result—obtaining yesterday’s date by subtracting one day from the current date. Although Joda-Time is no longer actively developed, it remains a reliable choice for projects still using it.

Each approach has its advantages and disadvantages, but overall, the use of modern APIs like java.time.LocalDate or Joda-Time is preferable due to its clarity, ease of use, and better support for date and time operations. As Java continues to evolve, developers are encouraged to adopt these newer APIs for improved code quality and maintainability.

Yatin Batra

An experience full-stack engineer well versed with Core Java, Spring/Springboot, MVC, Security, AOP, Frontend (Angular & React), and cloud technologies (such as AWS, GCP, Jenkins, Docker, K8).
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Back to top button