1. Panoramica
In questo tutorial, dimostreremo diversi modi per determinare se un determinato anno è un anno bisestile in Java.
Un anno bisestile è un anno divisibile per 4 e 400 senza resto . Pertanto, gli anni divisibili per 100 ma non per 400 non si qualificano, anche se sono divisibili per 4.
2. Utilizzo dell'API Calendar Pre-Java-8
A partire da Java 1.1, la classe GregorianCalendar ci consente di verificare se un anno è bisestile:
public boolean isLeapYear(int year);
Come ci si potrebbe aspettare, questo metodo restituisce true se l'anno specificato è un anno bisestile e false per anni non bisestili.
Gli anni in BC (Before Christ) devono essere passati come valori negativi e sono calcolati come 1 anno . Ad esempio, l'anno 3 a.C. è rappresentato come -2, poiché 1 - 3 = -2.
3. Utilizzo dell'API Data / Ora Java 8+
Java 8 ha introdotto java . pacchetto ora con un'API di data e ora molto migliore.
L' anno della classe in java . time package ha un metodo statico per verificare se l'anno specificato è un anno bisestile:
public static boolean isLeap(long year);
E ha anche un metodo di istanza per fare lo stesso:
public boolean isLeap();
4. Utilizzo dell'API Joda-Time
L'API Joda-Time è una delle librerie di terze parti più utilizzate tra i progetti Java per le utilità di data e ora. A partire da Java 8, questa libreria è in uno stato gestibile come menzionato nel repository dei sorgenti GitHub di Joda-Time.
Non esiste un metodo API predefinito per trovare un anno bisestile in Joda-Time. Tuttavia, possiamo usare le loro classi LocalDate e Days per verificare l'anno bisestile:
LocalDate localDate = new LocalDate(2020, 1, 31); int numberOfDays = Days.daysBetween(localDate, localDate.plusYears(1)).getDays(); boolean isLeapYear = (numberOfDays > 365) ? true : false;
5. conclusione
In questo tutorial, abbiamo visto cos'è un anno bisestile, la logica per trovarlo e diverse API Java che possiamo utilizzare per verificarlo.
Come sempre, gli snippet di codice possono essere trovati su GitHub.