Java program to get the current year, previous year, and next year is described in this post.
Here the year's examples are given based on legacy APIs and JDK 8 APIs
Print Current Year
In the Legacy way to just print the current year user Calendar instance like Calendar.getInstance().get(Calendar.YEAR)
In JDK 1.8 we have new APIs like Year, YearMonth, LocalDate, ZonedDateTime, OffsetDateTime to print the current year
Print Previous Year
Get the calendar instance first. The calendar has a void method called add that takes two arguments
void java.util.Calendar.add(int field, int amount)
In the field argument pass the current year and in the amount argument pass the amount of time.
Example
add(Calendar.YEAR, -1).
In java.time.Year API minusYears method is present to get the preceding year.
Syntax
Year java.time.Year.minusYears(long yearsToSubtract)
Print Next Year
For printing the succeeding year pass a positive integer such as 1 to get the upcoming year.
Example
add(Calendar.YEAR, 1).
Use plusYears method in the java.time.Year API to get the succeeding year.
Syntax
Year java.time.Year.plusYears(long yearsToAdd)
Get Previous year or Next year based on custom input date
We have also included a method here to print the preceding year or succeeding year based on custom year input.
private void getYearBasedOnCustomDate(String yearInput, int amount) throws ParseException
Pass the date input string and amount of time to this method to get the past year or the following year.
GetYear.java
package com.digitizedpost.date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.OffsetDateTime;
import java.time.Year;
import java.time.YearMonth;
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.Date;
public class GetYear {
private void getCurrentYear() {
System.out.println("Current Year (Legacy): " + Calendar.getInstance().get(Calendar.YEAR));
System.out.println("Current Year Java 1.8 - LocalDate: " + LocalDate.now().getYear());
System.out.println("Current Year Java 1.8 - Year: " + Year.now());
System.out.println("Current Year Java 1.8 - YearMonth: " + YearMonth.now().getYear());
System.out.println("Current Year Java 1.8 - ZonedDateTime: " + ZonedDateTime.now().getYear());
System.out.println("Current Year Java 1.8 - OffsetDateTime: " + OffsetDateTime.now().getYear());
}
private void getPreviousYear() {
Calendar previousYear = Calendar.getInstance();
previousYear.add(Calendar.YEAR, -1);
System.out.println("Previous Year (Legacy): " + previousYear.get(Calendar.YEAR));
System.out.println("Previous Year Java 1.8 - LocalDate: " + LocalDate.now().minusYears(1).getYear());
System.out.println("Previous Year Java 1.8: " + Year.now().minusYears(1));
System.out.println("Previous Year Java 1.8 - YearMonth: " + YearMonth.now().minusYears(1).getYear());
}
private void getNextYear() {
Calendar nextYear = Calendar.getInstance();
nextYear.add(Calendar.YEAR, 1);
System.out.println("Next Year (Legacy): " + nextYear.get(Calendar.YEAR));
System.out.println("Next Year Java 1.8 - LocalDate: " + LocalDate.now().plusYears(1).getYear());
System.out.println("Next Year Java 1.8: " + Year.now().plusYears(1));
System.out.println("Next Year Java 1.8 - YearMonth: " + YearMonth.now().plusYears(1).getYear());
}
private void getYearBasedOnCustomDate(String yearInput, int amount) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
Date customDate = dateFormat.parse(yearInput);
Calendar instance = Calendar.getInstance();
instance.setTime(customDate);
instance.add(Calendar.YEAR, amount);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
String year = sdf.format(instance.getTime());
System.out.println("Year: " + year);
}
public static void main(String[] args) {
GetYear year = new GetYear();
year.getCurrentYear();
year.getPreviousYear();
year.getNextYear();
try {
//Previous Year
year.getYearBasedOnCustomDate("01-05-2022", -1);
//Succeeding Year
year.getYearBasedOnCustomDate("01-05-2022", 1);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
Output
Current Year (Legacy): 2023
Current Year Java 1.8 - LocalDate: 2023
Current Year Java 1.8 - Year: 2023
Current Year Java 1.8 - YearMonth: 2023
Current Year Java 1.8 - ZonedDateTime: 2023
Current Year Java 1.8 - OffsetDateTime: 2023
Previous Year (Legacy): 2022
Previous Year Java 1.8 - LocalDate: 2022
Previous Year Java 1.8: 2022
Previous Year Java 1.8 - YearMonth: 2022
Next Year (Legacy): 2024
Next Year Java 1.8 - LocalDate: 2024
Next Year Java 1.8: 2024
Next Year Java 1.8 - YearMonth: 2024
Year: 2021
Year: 2023