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 . время пакет с гораздо лучшим API даты и времени .
Класс Год в java . time пакет имеет статический метод для проверки, является ли данный год високосным:
public static boolean isLeap(long year);
И у него также есть метод экземпляра, чтобы сделать то же самое:
public boolean isLeap();
4. Использование API Joda-Time
API Joda-Time является одной из наиболее часто используемых сторонних библиотек среди Java-проектов для утилит даты и времени. Начиная с Java 8, эта библиотека находится в ремонтопригодном состоянии , как указано в репозитории исходных текстов Joda-Time GitHub .
Не существует заранее определенного метода API для поиска високосного года в Joda-Time. Тем не менее, мы можем использовать их Локальную дату и Дни классы для проверки високосного года:
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.