Finne skuddår i Java

1. Oversikt

I denne opplæringen vil vi demonstrere flere måter å avgjøre om et gitt år er et skuddår i Java.

Et skuddår er et år som kan deles med 4 og 400 uten resten. Dermed kvalifiserer ikke år som kan deles med 100, men ikke med 400, selv om de kan deles med 4.

2. Bruke Pre-Java-8 Calendar API

Siden Java 1.1, har Gregorianske kalender klasse lar oss sjekke om et år er et skuddår:

offentlig boolsk isLeapYear (int år);

Som vi kunne forvente, returnerer denne metoden ekte hvis det gitte året er et skuddår og falsk for ikke-skuddår.

År i f.Kr. (Før Kristus) må overføres som negative verdier og beregnes som 1 - år. For eksempel er året 3 f.Kr. representert som -2, siden 1 - 3 = -2.

3. Ved hjelp av Java 8+ Date / Time API

Java 8 introduserte java.tid pakke med en mye bedre Date and Time API.

Klassen År i java.tid pakken har en statisk metode for å sjekke om det gitte året er et skuddår:

offentlig statisk boolsk isLeap (langt år);

Og det har også en forekomstmetode for å gjøre det samme:

offentlig boolsk isLeap ();

4. Bruker Joda-Time API

Joda-Time API er et av de mest brukte tredjepartsbibliotekene blant Java-prosjektene for dato- og klokkeslettverktøy. Siden Java 8, dette biblioteket er i vedlikeholdsrik tilstand som nevnt i Joda-Time GitHub-kildedepotet.

Det er ingen forhåndsdefinert API-metode for å finne et skuddår i Joda-Time. Imidlertid kan vi bruke deres LocalDate og Dager klasser for å sjekke for skuddår:

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

5. Konklusjon

I denne opplæringen har vi sett hva et skuddår er, logikken for å finne den, og flere Java API-er vi kan bruke til å sjekke om det.

Som alltid kan du finne kodebiter på GitHub.


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