Find skudår i Java

1. Oversigt

I denne vejledning demonstrerer vi flere måder at afgøre, om et givet år er et skudår i Java.

Et skudår er et år, der kan deles med 4 og 400 uden en rest. Således kvalificerer år, der er delelige med 100, men ikke med 400, selvom de kan deles med 4.

2. Brug af Pre-Java-8 Calendar API

Siden Java 1.1 blev den Gregoriansk kalender klasse giver os mulighed for at kontrollere, om et år er et skudår:

offentlig boolsk isLeapYear (int år);

Som vi kunne forvente, vender denne metode tilbage rigtigt hvis det givne år er et skudår og falsk i ikke-skudår.

År i f.Kr. (Før Kristus) skal overføres som negative værdier og beregnes som 1 - år. For eksempel er året 3 f.Kr. repræsenteret som -2, da 1 - 3 = -2.

3. Brug af Java 8+ Date / Time API

Java 8 introducerede java.tid pakke med en meget bedre Date and Time API.

Klassen År i java.tid pakken har en statisk metode til at kontrollere, om det givne år er et skudår:

offentlig statisk boolsk isLeap (langt år);

Og det har også en instansmetode til at gøre det samme:

offentlig boolsk isLeap ();

4. Brug af Joda-Time API

Joda-Time API er et af de mest anvendte tredjepartsbiblioteker blandt Java-projekterne til dato- og tidsværktøjer. Siden Java 8, dette bibliotek er i vedligeholdelig tilstand som nævnt i Joda-Time GitHub-kildelageret.

Der er ingen foruddefineret API-metode til at finde et skudår i Joda-Time. Vi kan dog bruge deres LocalDate og Dage klasser at kontrollere for skudår:

LocalDate localDate = ny LocalDate (2020, 1, 31); int numberOfDays = Days.daysBetween (localDate, localDate.plusYears (1)). getDays (); boolsk isLeapYear = (numberOfDays> 365)? sandt falsk;

5. Konklusion

I denne vejledning har vi set, hvad et skudår er, logikken til at finde det og flere Java API'er, vi kan bruge til at kontrollere det.

Som altid kan kodeuddrag findes på GitHub.


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