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.utilpackage. - Main Class: Define a class named
YesterdayChecker. - Main Method: Define the
mainmethod where the execution of the program begins. - Current Date Object: Create a
DateobjectcurrentDaterepresenting the current date and time. - Calendar Instance: Create a
Calendarobjectcalendarusing thegetInstance()method and set it to the current date usingsetTime()method. - Subtract One Day: Subtract one day from the current date using
add()method withCalendar.DAY_OF_YEARfield. - Yesterday Date Object: Get the date representing yesterday using
getTime()method. - Some Date Object: Create another
DateobjectsomeDatefor demonstration purposes. - Comparison: Check if
someDateis equal toyesterdayDateusing theequals()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
DateobjectcurrentDaterepresenting 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
DateobjectyesterdayDateusing the calculated milliseconds for yesterday. - Some Date Object: Create another
DateobjectsomeDatefor demonstration purposes. - Comparison: Check if
someDateis equal toyesterdayDate.
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
LocalDateobjectsomeDatefor demonstration purposes. - Comparison: Check if
someDateis equal toyesterdayDate.
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
LocalDateobjectsomeDatefor demonstration purposes. - Comparison: Check if
someDateis equal toyesterdayDate.
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.DateMilliseconds: 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 legacyjava.util.Dateclass, which has been mostly replaced byjava.time. - Using
java.time.LocalDate: Introduced in Java 8, thejava.timepackage 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 tojava.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.

