Ako získať začiatok a koniec dňa pomocou Java
1. Prehľad
V tomto krátkom návode naučíme sa, ako získať začiatok a koniec dňa v Javepomocou jednoduchých a priamych príkladov pre rôzne scenáre.
Na zostavenie týchto príkladov použijeme Java 8 API Date / Time.
Ak si chcete predtým prečítať niečo viac o knižnici Java 8 Date and Time, môžete začať tu.
2. Od a LocalDate Objekt
Najskôr sa pozrime, ako môžeme dosiahnuť začiatok alebo koniec dňa, ktorý nám bol daný ako LocalDate objekt, napríklad:
LocalDate localDate = LocalDate.parse ("2018-06-23");
2.1. atStartOfDay ()
Najjednoduchší spôsob, ako získať LocalDateTime predstavujúci začiatok konkrétneho dňa je pomocou atStartOfDay () metóda:
LocalDateTime startOfDay = localDate.atStartOfDay ();
Táto metóda je preťažená, teda v prípade, že chceme dostať a ZonedDateTime z toho môžeme urobiť uvedením ZoneId:
ZonedDateTime startOfDay = localDate.atStartOfDay (ZoneId.of ("Európa / Paríž"));
2.2. z ()
Ďalším spôsobom, ako môžeme dosiahnuť rovnaký výsledok, je použitie z () metóda, poskytujúca a LocalDate a jeden z Miestny časStatické polia:
LocalDateTime startOfDay = LocalDateTime.of (localDate, LocalTime.MIDNIGHT);
Miestny čas ponúka nasledujúce statické polia: Polnoci (00:00), MIN (00:00), Poludnie (12:00) a MAX(23:59:59.999999999).
Preto, ak chceme dostať koniec dňa, použijeme MAX hodnotu.
Skúsme to, ale s inou metódou.
2.3. v čase()
Táto metóda je preťažená, čo nám umožňuje určiť požadovaný čas pomocou hodín, minút, sekúnd alebo dokonca nanosekúnd.
V tomto prípade každopádne použijeme Miestny čas‘S MAX pole ako argument na získanie posledného okamihu daného dňa:
LocalDateTime startOfDay = localDate.atTime (LocalTime.MAX);
2.4. atDate ()
Tento príklad je dosť podobný predchádzajúcim, ale tentokrát použijeme atDate () metóda a Miestny čas objekt, prechádzajúci okolo LocalDate ako argument:
LocalDateTime endOfDate = LocalTime.MAX.atDate (localDate);
3. Od a LocalDateTime Objekt
Je takmer samozrejmé, že môžeme získať LocalDate a potom použite ktorúkoľvek z metód uvedených v časti 2, aby ste z nej dostali koniec alebo začiatok dňa:
LocalDateTime localDateTime = LocalDateTime .parse ("2018-06-23T05: 55: 55"); LocalDateTime endOfDate = localDateTime .toLocalDate (). AtTime (LocalTime.MAX);
Ale v tejto časti budeme analyzovať jednu ďalšiu metódu na získanie objektu s jeho časovou časťou nastavenou na začiatok alebo na koniec dňa, priamo z inej danej LocalDateTime objekt.
3.1. s ()
Všetky triedy implementujúce Časové rozhranie môže použiť túto metódu.
V tomto prípade použijeme podpis metódy, ktorá trvá a TemporalField (predovšetkým jeden z ChronoField Enum hodnoty) a a dlho argument ako nová hodnota poľa:
LocalDateTime endOfDate = localDateTime.with (ChronoField.NANO_OF_DAY, LocalTime.MAX.toNanoOfDay ());
4. Od a ZonedDateTime Objekt
Ak dostaneme a ZonedDateTime, môžeme použiť s () metóda, pretože implementuje Časové rozhranie tiež:
ZonedDateTime startofDay = zonedDateTime.with (ChronoField.HOUR_OF_DAY, 0);
5. Záver
Ak to zhrnieme, analyzovali sme veľa rôznych spôsobov, ako získať začiatok a koniec dňa v prostredí Java, a to pre rôzne scenáre.
Na záver sme sa dozvedeli o poznatkoch 8 tried knižnice Java a dátumov a oboznámili sme sa s mnohými jeho triedami a rozhraniami.
Ako vždy, všetky príklady sú prístupné v našom úložisku GitHub.