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.