Hvordan komme i gang og slutten av en dag ved hjelp av Java

1. Oversikt

I denne korte opplæringen, vi lærer hvordan vi kan komme i gang og slutten på en dag i Java, ved hjelp av enkle, greie eksempler for forskjellige scenarier.

Vi bruker Java 8 Date / Time API for å bygge disse eksemplene.

Hvis du vil lese litt mer om Java's 8 Date and Time-bibliotek før du fortsetter, kan du komme i gang her.

2. Fra en LocalDate Gjenstand

Først av alt, la oss se hvordan vi kan få starten eller slutten på en dag gitt oss som en LocalDate objekt, for eksempel:

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

2.1. atStartOfDay ()

Den enkleste måten å få en LocalDateTime som representerer begynnelsen på en bestemt dag, er å bruke atStartOfDay () metode:

LocalDateTime startOfDay = localDate.atStartOfDay ();

Denne metoden er overbelastet, og i tilfelle vi ønsker å få en ZonedDateTime fra det, kan vi gjøre det ved å spesifisere ZoneId:

ZonedDateTime startOfDay = localDate.atStartOfDay (ZoneId.of ("Europe / Paris"));

2.2. av()

En annen måte vi kan oppnå det samme resultatet på er å bruke av() metode, som gir en LocalDate og en av Lokal tidStatiske felt:

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

Lokal tid tilbyr følgende statiske felt: MIDNATT (00:00), MIN (00:00), MIDDAGSTID (12:00), og MAX(23:59:59.999999999).

Derfor, hvis vi ønsker å få slutten av dagen, vil vi bruke MAX verdi.

La oss prøve det, men med en annen metode.

2.3. på tidspunktet()

Denne metoden er overbelastet, slik at vi kan spesifisere ønsket tid ved hjelp av timer, minutter, sekunder eller til og med nanosekunder.

I dette tilfellet vil vi uansett bruke Lokal tid‘S MAX felt som argument for å få siste øyeblikk av den gitte dagen:

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

2.4. atDate ()

Dette eksemplet er ganske likt de forrige, men denne gangen bruker vi atDate () metode for a Lokal tid objekt, passerer LocalDate som argumentet:

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

3. Fra a LocalDateTime Gjenstand

Det sier nesten seg selv at vi kan få LocalDate fra den, og bruk deretter en av metodene i avsnitt 2 for å få slutten eller starten på dagen fra den:

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

Men i denne delen vil vi analysere en annen metode for å skaffe objektet med tidsdelen satt til start eller slutt på dagen, direkte fra en annen gitt LocalDateTime gjenstand.

3.1. med()

Alle klasser som implementerer Temporal grensesnitt kan bruke denne metoden.

I dette tilfellet bruker vi signaturen til metoden som tar en TemporalField (spesielt en av ChronoField Enum verdier) og a lang argumentet som den nye verdien av feltet:

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

4. Fra a ZonedDateTime Gjenstand

Hvis vi får en ZonedDateTime, vi kan bruke med() metoden siden den implementerer Temporal grensesnitt også:

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

5. Konklusjon

For å oppsummere har vi analysert mange forskjellige måter å komme i gang og slutte på en dag i Java for mange forskjellige saksscenarier.

Til slutt har vi lært om innsikten i Java's 8 Date and Time-bibliotekkurs og blitt kjent med mange av klassene og grensesnittene.

Som alltid kan du få tilgang til alle eksemplene i GitHub-depotet vårt.


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