Рубрики
Без рубрики

Поиск високосных лет на Яве

Краткое и практическое руководство по поиску високосных лет на Java.

Автор оригинала: baeldung.

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.