Hľadanie priestupných rokov v Jave
1. Prehľad
V tomto tutoriáli si ukážeme niekoľko spôsobov, ako zistiť, či je daný rok v Jave priestupný.
Prestupný rok je rok, ktorý je deliteľný 4 a 400 bez zvyšku. Teda roky, ktoré sú deliteľné 100, ale nie 400, sa nekvalifikujú, aj keď sú deliteľné 4.
2. Pomocou rozhrania Calendar Pre-Java-8 Calendar
Od verzie Java 1.1 sa Gregoriánsky kalendár trieda nám umožňuje skontrolovať, či je rok priestupným rokom:
public boolean isLeapYear (int rok);
Ako by sme mohli čakať, táto metóda sa vracia pravda ak je daný rok priestupným rokom a nepravdivé na priestupné roky.
Roky pred naším letopočtom (pred Kristom) je potrebné považovať za záporné hodnoty a počítajú sa ako 1 - rok. Napríklad rok 3 pred Kr. Je reprezentovaný ako -2, keďže 1 - 3 = -2.
3. Používanie rozhrania API pre dátum a čas Java 8+
Java 8 predstavila java.čas balík s oveľa lepším rozhraním API pre dátum a čas.
Trieda Rok v java.čas balík má statický metóda na kontrolu, či je daný rok priestupným rokom:
public static boolean isLeap (long year);
A má tiež inštančnú metódu, ktorá robí to isté:
public boolean isLeap ();
4. Pomocou rozhrania Joda-Time API
Joda-Time API je jednou z najpoužívanejších knižníc tretích strán medzi projektmi Java pre obslužné programy dátumu a času. Od verzie Java 8 táto knižnica je v udržovateľnom stave ako je uvedené v zdrojovom úložisku Joda-Time GitHub.
Neexistuje žiadna preddefinovaná metóda API na nájdenie priestupného roku v Joda-Time. Môžeme však použiť ich LocalDate a Dni triedy na kontrolu priestupného roku:
LocalDate localDate = nový LocalDate (2020, 1, 31); int numberOfDays = Days.daysB Between (localDate, localDate.plusYears (1)). getDays (); boolean isLeapYear = (numberOfDays> 365)? pravda lož;
5. Záver
V tomto tutoriáli sme videli, čo je priestupný rok, logika jeho hľadania a niekoľko rozhraní Java API, ktoré môžeme použiť na jeho kontrolu.
Útržky kódu ako vždy nájdete na GitHub.