Kako dobiti početak i kraj dana pomoću Jave

1. Pregled

U ovom kratkom vodiču, naučit ćemo kako započeti i završiti dan u Javi, koristeći jednostavne, neposredne primjere za različite scenarije.

Za izradu ovih primjera koristit ćemo Java 8 Date / Time API.

U slučaju da prije nastavka želite pročitati malo više o Javinoj knjižnici datuma i vremena 8, ovdje možete započeti.

2. Iz a LocalDate Objekt

Prije svega, pogledajmo kako možemo dobiti početak ili kraj dana koji nam je dan kao LocalDate objekt, kao što su:

LocalDate localDate = LocalDate.parse ("23.06.2018");

2.1. atStartOfDay ()

Najjednostavniji način dobivanja a LocalDateTime predstavljanje početka određenog dana je pomoću atStartOfDay () metoda:

LocalDateTime startOfDay = localDate.atStartOfDay ();

Ova je metoda preopterećena, pa u slučaju da želimo dobiti a ZonedDateTime iz nje to možemo učiniti tako da odredimo ZoneId:

ZonedDateTime startOfDay = localDate.atStartOfDay (ZoneId.of ("Europa / Pariz"));

2.2. od()

Drugi način na koji možemo postići isti rezultat je upotrebom od() metoda koja pruža a LocalDate i jedan od Lokalno vrijemeStatička polja:

LocalDateTime startOfDay = LocalDateTime.of (localDate, LocalTime.MIDNIGHT);

Lokalno vrijeme nudi sljedeća statička polja: PONOĆ (00:00), MIN (00:00), PODNE (12:00) i MAKS(23:59:59.999999999).

Stoga, ako želimo doći do kraja dana, koristili bismo MAKS vrijednost.

Isprobajmo, ali drugom metodom.

2.3. na vrijeme()

Ova je metoda preopterećena, što nam omogućuje da odredimo željeno vrijeme koristeći sate, minute, sekunde ili čak nanosekunde.

U ovom ćemo slučaju, u svakom slučaju, koristiti Lokalno vrijeme‘S MAKS polje kao argument za dobivanje zadnjeg trenutka datog dana:

LocalDateTime startOfDay = localDate.atTime (LocalTime.MAX);

2.4. na datum ()

Ovaj je primjer prilično sličan prethodnim, ali ovaj put koristit ćemo na datum () metoda a Lokalno vrijeme objekt, prolazeći LocalDate kao argument:

LocalDateTime endOfDate = LocalTime.MAX.atDate (localDate);

3. Iz a LocalDateTime Objekt

Gotovo se podrazumijeva da možemo dobiti LocalDate iz njega, a zatim upotrijebite bilo koju od metoda iz odjeljka 2 da biste dobili kraj ili početak dana:

LocalDateTime localDateTime = LocalDateTime .parse ("2018-06-23T05: 55: 55"); LocalDateTime endOfDate = localDateTime .toLocalDate (). AtTime (LocalTime.MAX);

Ali u ovom ćemo odjeljku analizirati još jednu metodu za dobivanje objekta s vremenskim odjeljkom postavljenim na početak ili kraj dana, izravno iz drugog zadanog LocalDateTime objekt.

3.1. s()

Svi razredi koji provode Vremensko sučelje mogu koristiti ovu metodu.

U ovom slučaju koristit ćemo potpis metode koja uzima a TemporalField (posebno jedan od ChronoField Enum vrijednosti) i a dugo argument kao nova vrijednost polja:

LocalDateTime endOfDate = localDateTime.with (ChronoField.NANO_OF_DAY, LocalTime.MAX.toNanoOfDay ());

4. Iz a ZonedDateTime Objekt

Ako dobijemo a ZonedDateTime, možemo koristiti s() metoda budući da provodi Vremensko sučelje također:

ZonedDateTime startofDay = zonedDateTime.with (ChronoField.HOUR_OF_DAY, 0);

5. Zaključak

Da rezimiramo, analizirali smo puno različitih načina za dobivanje početka i kraja dana u Javi za mnoge različite scenarije slučaja.

Konačno, saznali smo o uvidima u Java 8 klasa biblioteke datuma i vremena te smo se upoznali s mnogim njezinim klasama i sučeljima.

Kao i uvijek, svim se primjerima može pristupiti u našem GitHub spremištu.


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