The java.time.Period class represents a date-based amount of time in terms of years, months, and days. It is used to model calendar-based differences, like “2 years and 3 months” or “10 days”.
Commonly Used Methods

Simple Program
import java.time.LocalDate;
import java.time.Period;
public class SimplePeriodExample {
public static void main(String[] args) {
LocalDate startDate = LocalDate.of(2022, 1, 15);
LocalDate endDate = LocalDate.of(2025, 5, 22);
Period period = Period.between(startDate, endDate);
System.out.println("Years: " + period.getYears());
System.out.println("Months: " + period.getMonths());
System.out.println("Days: " + period.getDays());
}
}
Problem Statement
LotusJavaPrince and Mahesh are building a loan management system for Sunrise Microfinance. The requirement is:
- When a customer applies for a loan, the system should calculate the time elapsed since the customer joined the bank.
- Based on the membership period (in years and months), the customer may be eligible for a loyalty bonus.
- The system must use
Periodto evaluate membership duration accurately.
import java.time.LocalDate;
import java.time.Period;
public class LoanLoyaltyCalculator {
public static void main(String[] args) {
// Customer joined date
LocalDate joiningDate = LocalDate.of(2018, 3, 12);
LocalDate currentDate = LocalDate.now();
// Calculate period between joining date and now
Period membershipPeriod = Period.between(joiningDate, currentDate);
System.out.println("Customer joined on: " + joiningDate);
System.out.println("Current date: " + currentDate);
System.out.println("Membership duration: " +
membershipPeriod.getYears() + " years, " +
membershipPeriod.getMonths() + " months, and " +
membershipPeriod.getDays() + " days.");
// Loyalty bonus logic
if (membershipPeriod.getYears() >= 5) {
System.out.println("Eligible for Platinum Loyalty Bonus.");
} else if (membershipPeriod.getYears() >= 3) {
System.out.println("Eligible for Gold Loyalty Bonus.");
} else {
System.out.println("Not eligible for loyalty bonus yet.");
}
}
}
/*
Customer joined on: 2018-03-12
Current date: 2025-05-22
Membership duration: 7 years, 2 months, and 10 days.
Eligible for Platinum Loyalty Bonus.
*/The Period class in Java is ideal for handling calendar-based differences like “years, months, and days”. It is:
- Best suited for human-readable time spans, like age, membership length, or tenure.
- Essential when calculating date differences where months and years matter (e.g., “2 years and 6 months”).
- Immutable, reliable, and easily integrated with
LocalDate.
Use Period for date-related logic involving years, months, and days, such as age calculation, policy durations, or eligibility tracking in banking or HR applications.
