1. Обзор
В этом руководстве мы покажем несколько способов определить, является ли данный год високосным в Java.
Високосный год – это год, который делится на 4 и 400 без остатка . Таким образом, годы, которые делятся на 100, но не делятся на 400, не подходят, даже если они делятся на 4.
2. Использование API календаря до Java-8
Начиная с Java 1.1, класс GregorianCalendar
позволяет нам проверять, является ли год високосным:
public boolean isLeapYear(int year);
Как и следовало ожидать, этот метод возвращает значение true
, если данный год является високосным, и значение false
, если год не является високосным .
Годы до нашей эры (до Рождества Христова) должны передаваться как отрицательные значения и рассчитываются как 1 – год
. Например, 3 год до н.э. представлен как -2, поскольку 1 – 3 = -2.
3. Использование API даты/времени Java 8+
Java 8 представила java
. time
с гораздо лучшим API даты и времени .
Класс Year
в java
. time
имеет статический
метод для проверки того, является ли данный год високосным:
public static boolean isLeap(long year);
И у него также есть метод экземпляра, чтобы сделать то же самое:
public boolean isLeap();
4. Использование API Joda-Time
Joda -Time API — одна из наиболее часто используемых сторонних библиотек среди проектов Java для утилит даты и времени. Начиная с Java 8, эта библиотека находится в поддерживаемом состоянии , как указано в исходном репозитории Joda-Time GitHub .
Не существует предопределенного API-метода для поиска високосного года в Joda-Time. Однако мы можем использовать их классы LocalDate
и Days
для проверки високосного года:
LocalDate localDate = new LocalDate(2020, 1, 31);
int numberOfDays = Days.daysBetween(localDate, localDate.plusYears(1)).getDays();
boolean isLeapYear = (numberOfDays > 365) ? true : false;
5. Вывод
В этом руководстве мы увидели, что такое високосный год, логику его поиска и несколько API-интерфейсов Java, которые мы можем использовать для его проверки.
Как всегда, фрагменты кода можно найти на GitHub.