Search code examples
javadatecalendarjava-time

How to check if a date Object equals yesterday?


Right now I am using this code

Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE) - 1, 12, 0, 0); //Sets Calendar to "yeserday, 12am"
if(sdf.format(getDateFromLine(line)).equals(sdf.format(cal.getTime())))                         //getDateFromLine() returns a Date Object that is always at 12pm
{...CODE

There's got to be a smoother way to check if the date returned by getdateFromLine() is yesterday's date. Only the date matters, not the time. That's why I used SimpleDateFormat. Thanks for your help in advance!


Solution

  • Calendar c1 = Calendar.getInstance(); // today
    c1.add(Calendar.DAY_OF_YEAR, -1); // yesterday
    
    Calendar c2 = Calendar.getInstance();
    c2.setTime(getDateFromLine(line)); // your date
    
    if (c1.get(Calendar.YEAR) == c2.get(Calendar.YEAR)
      && c1.get(Calendar.DAY_OF_YEAR) == c2.get(Calendar.DAY_OF_YEAR)) {
    

    This will also work for dates like 1st of January.