Hoe u het begin en het einde van een dag kunt krijgen met Java

1. Overzicht

In deze korte tutorial, we zullen leren hoe we het begin en het einde van een dag in Java kunnen krijgen, met behulp van eenvoudige, duidelijke voorbeelden voor verschillende scenario's.

We zullen de Java 8 Date / Time API gebruiken om deze voorbeelden te bouwen.

Als je wat meer wilt lezen over Java's 8 Datum- en tijdbibliotheek voordat je verder gaat, kun je hier aan de slag.

2. Van een LocalDate Voorwerp

Laten we eerst eens kijken hoe we het begin of het einde van een dag aan ons kunnen geven als een LocalDate object, zoals:

LocalDate localDate = LocalDate.parse ("2018-06-23");

2.1. opStartOfDay ()

De eenvoudigste manier om een LocalDateTime het begin van een bepaalde dag vertegenwoordigen is door de opStartOfDay () methode:

LocalDateTime startOfDay = localDate.atStartOfDay ();

Deze methode is overbelast, dus voor het geval we een ZonedDateTime daaruit kunnen we dit doen door de specificatie van de ZoneId:

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

2.2. van()

Een andere manier waarop we hetzelfde resultaat kunnen bereiken, is door de van() methode, met een LocalDate en een van de Lokale tijd‘Statische velden:

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

Lokale tijd biedt de volgende statische velden: MIDDERNACHT (00:00), MIN (00:00), MIDDAG (12:00), en MAX(23:59:59.999999999).

Daarom, als we het einde van de dag willen halen, gebruiken we de MAX waarde.

Laten we het uitproberen, maar met een andere methode.

2.3. op tijd()

Deze methode is overbelast, waardoor we de gewenste tijd kunnen specificeren in uren, minuten, seconden of zelfs nanoseconden.

In dit geval gebruiken we hoe dan ook de Lokale tijd‘S MAX veld als het argument om het laatste moment van de gegeven dag te krijgen:

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

2.4. op datum ()

Dit voorbeeld lijkt veel op de vorige, maar deze keer gebruiken we de op datum () methode van een Lokale tijd object, voorbij het LocalDate als argument:

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

3. Van een LocalDateTime Voorwerp

Het is bijna vanzelfsprekend dat we de LocalDate eruit en gebruik vervolgens een van de methoden van sectie 2 om er het einde of begin van de dag van te maken:

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

Maar in deze sectie zullen we een andere methode analyseren om het object te verkrijgen met zijn tijdsectie ingesteld op het begin of einde van de dag, rechtstreeks van een andere gegeven LocalDateTime voorwerp.

3.1. met()

Alle klassen die het Tijdelijke interface kan deze methode gebruiken.

In dit geval gebruiken we de handtekening van de methode waarvoor een TemporalField (met name een van de ChronoField Enum waarden) en een lang argument als de nieuwe waarde van het veld:

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

4. Van een ZonedDateTime Voorwerp

Als we een ZonedDateTime, we kunnen de met() methode aangezien het de Tijdelijke interface ook:

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

5. Conclusie

Samenvattend: we hebben veel verschillende manieren geanalyseerd om het begin en het einde van een dag in Java te krijgen voor veel verschillende casescenario's.

Ten slotte hebben we geleerd over de inzichten van Java's 8 datum- en tijdbibliotheekklassen en zijn we bekend met veel van zijn klassen en interfaces.

Zoals altijd zijn alle voorbeelden toegankelijk in onze GitHub-repository.