Extraherar år, månad och dag från datum i Java

1. Översikt

I den här korta handledningen tittar vi på hur man extraherar år , månad och dag från ett visst datum i Java.

Vi kommer att titta på hur man extraherar dessa värden med den gamla java.util.Date- klassen och även med hjälp av det nya datumbiblioteket i Java 8.

I Java 8 introducerades ett helt nytt datum- och tidsbibliotek av flera goda skäl. Förutom andra fördelar erbjuder det nya biblioteket ett bättre API för operationer som att extrahera år , månad , dag etc. från angivet datum .

Och om du letar efter en mer detaljerad artikel om det nya datumbiblioteket, ta en titt här.

2. Använda Java 7

För en viss java.util.Date för att extrahera enskilda fält som år , månad , dag etc. är det första steget vi behöver göra att konvertera det till kalenderinstans :

Date date = // the date instance Calendar calendar = Calendar.getInstance(); calendar.setTime(date);

När vi väl har en kalenderinstans kan vi direkt anropa dess get- metod och ange det specifika fält som vi vill extrahera.

Vi kan använda konstanter som finns i kalendern för att extrahera specifika fält.

2.1. Få år

För att extrahera året kan vi åberopa get genom att skicka Calendar.YEAR som ett argument:

calendar.get(Calendar.YEAR);

2.2. Få månad

På samma sätt för att extrahera månaden kan vi åberopa get genom att skicka Calendar.MONTH som ett argument:

calendar.get(Calendar.MONTH);

Observera att månader i kalendern är nollindexerade. för januari kommer denna metod att returnera 0.

2.3. Få dag

Slutligen, för att extrahera dagen, åberopar vi get genom att skicka Calendar.DAY_OF_MONTH som ett argument:

calendar.get(Calendar.DAY_OF_MONTH);

3. Använda Java 8

Det nya paketet java.time innehåller ett antal klasser som kan användas för att representera Date .

Varje klass skiljer sig åt med den extra information som den lagrar utöver datumet .

Den grundläggande LocalDate innehåller bara datuminformationen , medan LocalDateTime innehåller datum- och tidsinformation.

liknande sätt innehåller mer avancerade klasser som OffsetDateTime och ZonedDateTime ytterligare information om offset från UTC respektive information om tidszon .

I alla fall stöder alla dessa klasser direkta metoder för att extrahera information om år, månad och datum.

Låt oss undersöka dessa metoder att extrahera information från ett LocalDate instansnamn localDate .

3.1. Få år

För att extrahera år ger LocalDate helt enkelt en getYear- metod:

localDate.getYear();

3.2. Få månad

På samma sätt använder vi getMonthValue API för att extrahera månad :

localDate.getMonthValue();

Till skillnad från kalender indexeras månader i LocalDate från 1; för januari kommer detta att återvända 1.

3.3. Få dag

Slutligen, för att extrahera dag, har vi getDayOfMonth- metoden:

localDate.getDayOfMonth();

4. Slutsats

I den här snabbhandledningen har vi undersökt hur man extraherar heltal av år , månad och dag från datum i Java.

Vi har visat hur man extraherar dessa värden med de gamla datum- och kalenderklasserna samt det nya datum-tidsbiblioteket i Java8.

Den fullständiga källkoden för utdrag som används i den här självstudien finns på Github.