Pronalaženje prijestupnih godina na Javi

1. Pregled

U ovom ćemo uputstvu pokazati nekoliko načina kako odrediti je li određena godina prestupna u Javi.

Prestupna je godina koja je djeljiva s 4 i 400 bez ostatka. Dakle, godine koje su djeljive sa 100, ali ne sa 400 ne ispunjavaju uvjete, iako su djeljive sa 4.

2. Korištenje API-ja kalendara Pre-Java-8

Od Jave 1.1, Gregorijanski kalendar klasa omogućuje nam da provjerimo je li godina prijestupna:

javni boolean isLeapYear (int godina);

Kao što bismo mogli očekivati, ova metoda se vraća pravi ako je data godina prestupna i lažno za prijestupne godine.

Godine u pr. Kr. (Prije Krista) treba donijeti kao negativne vrijednosti i izračunavaju se kao 1 - godina. Na primjer, godina 3. prije Krista predstavljena je kao -2, budući da je 1 - 3 = -2.

3. Korištenje Java 8+ Datum / Vrijeme API-ja

Java 8 je predstavila Java.vrijeme paket s puno boljim API-jem za datum i vrijeme.

Razred Godina u Java.vrijeme paket ima a statički metoda za provjeru je li zadana godina prijestupna:

javni statički logički isLeap (duga godina);

A također ima metodu instance koja čini isto:

javni logički isLeap ();

4. Korištenje Joda-Time API-ja

Joda-Time API jedna je od najčešće korištenih neovisnih knjižnica među Java projektima za uslužne programe za datum i vrijeme. Od Jave 8, ova je knjižnica u stanju za održavanje kao što je spomenuto u Joda-Time GitHub izvornom spremištu.

Ne postoji unaprijed definirana API metoda za pronalaženje prestupne godine u Joda-Timeu. Međutim, možemo se poslužiti njihovim LocalDate i Dana klase za provjeru prijestupne godine:

LocalDate localDate = novi LocalDate (2020, 1, 31); int numberOfDays = Days.daysBetween (localDate, localDate.plusYears (1)). getDays (); boolean isLeapYear = (numberOfDays> 365)? točno netočno;

5. Zaključak

U ovom uputstvu vidjeli smo što je prijestupna godina, logika pronalaženja i nekoliko Java API-ja koje možemo koristiti za provjeru.

Kao i uvijek, isječke koda možete pronaći na GitHubu.


$config[zx-auto] not found$config[zx-overlay] not found