Arbeide med datoer i Kotlin

1. Introduksjon

I denne raske opplæringen lærer vi om å jobbe med datoer i Kotlin.

Vi skal se på det Dato-relaterte operasjoner som å lage, formatere og manipulere datoer.

2. Opprette en dato

Den raskeste måten å lage en Dato objektet bruker LocalDate‘S analysere () metode:

var date = LocalDate.parse ("12-12-2018")

De analysere () metoden som standard bruker standard datoformat åååå-MM-dd.

Vi kan også sende vårt eget format for å analysere en datastreng:

var formatter = DateTimeFormatter.ofPattern ("dd-MM-yyyy") var date = LocalDate.parse ("31-12-2018", formatter)

Og hvis vi trenger mer kontroll, kan vi spesifiser spesifikk år, dag og måned ved hjelp av LocalDate‘S av() metode:

var date = LocalDate.of (2018, 12, 31)

3. Formatering av en dato

La oss deretter se på hvordan vi kan formatere datoobjektene våre tilbake til Strenger.

Standard formatering av dato ved bruk av standardformat i Kotlin påkaller toString () -metoden.

La oss lage en dato

var date = LocalDate.parse ("2018-12-31")

og se på standardutgangen for bruk toString:

assertThat (date.toString ()). isEqualTo ("2018-12-31")

Dette ser lesbart ut som utdataformatet er åååå-MM-dd, men igjen, vi kan trenge å formatere datoen til tilpassede formater, avhengig av brukssakene våre.

For å formatere datoen vår til forskjellige formater vi kan bruke LocalDate‘S format() metode og levere det vårt tilpassede format ved hjelp av DateTimeFormatter:

var formatter = DateTimeFormatter.ofPattern ("dd-MMMM-åååå") var formattedDate = date.format (formatter)

Dette gir en pent formatert dato:

assertThat (formattedDate) .isEqualTo ("31. desember 2018")

4. Pakke ut datakomponenter

LocalDate gir mange metoder som vi kan bruke for å trekke ut spesifikke komponenter fra Dato.

Noen av disse er ganske trivielle, for eksempel å trekke ut år, måned eller dag fra en Dato:

var date = LocalDate.parse ("2018-12-31") assertThat (date.year) .isEqualTo (2018) assertThat (date.month) .isEqualTo (Month.DECEMBER) assertThat (date.dayOfMonth) .isEqualTo (31)

Vi kan også trekke ut annen informasjon som era, dayOfTheWeek eller dayOfTheMonth:

assertThat (date.era.toString ()). isEqualTo ("CE") assertThat (date.dayOfWeek) .isEqualTo (DayOfWeek.MONDAY) assertThat (date.dayOfYear) .isEqualTo (365)

5. Arbeide med Periode

Til slutt, la oss se på å jobbe med Perioder i Kotlin.

Perioder representerer en avstand på tidslinjen. Vi kan lage en Periode ved hjelp av Periode'S klasse fabrikk metode:

var periode = Periode. av (1, 2, 3)

Dette skaper en Periode på 1 år, 2 måneder og 3 dager.

For å legge til dette Periode til en eksisterende dato bruker vi LocalDate‘S i tillegg til() metode:

var date = LocalDate.of (2018, 6, 25) var modifiedDate = date.plus (periode)

Dette vil legge til 1 år, 2 måneder og 3 dager til den gitte datoen og produsere den endrede datoen:

assertThat (modifiedDate) .isEqualTo ("28.08.2019")

På samme måte kan vi trekke fra a Periode fra en gitt dato:

var date = LocalDate.of (2018, 6, 25) var modifiedDate = date.minus (periode)

Og som forventet vil den endrede datoen være:

assertThat (modifiedDate) .isEqualTo ("2017-04-22")

Vi kan også bruke perioder til å representere avstanden mellom to datoer.

La oss anta at vi har to datoer, nøyaktig seks måneder fra hverandre:

var date1 = LocalDate.parse ("2018-06-25") var date2 = LocalDate.parse ("2018-12-25")

Nå kan vi representere avstanden mellom disse to datoene ved hjelp av periode mellom metode:

var periode = Periode. mellom (dato1, dato2)

De periode variabel vil produsere følgende:

assertThat (period.toString ()). isEqualTo ("P6M")

P står for Periode og 6M betyr 6 måneder.

6. Konklusjon

I denne artikkelen har vi lært det grunnleggende om hvordan du kan jobbe med Dates i Kotlin.

Vi har sett på hvordan du lager datoinstanser ved hjelp av forskjellige metoder og hvordan du formaterer datoobjekter tilbake til lesbare tekster.

Videre så vi på å hente ut komponenter fra Dato gjenstander og til slutt hvordan du kan jobbe med Perioder i Kotlin.

Koden som brukes i denne opplæringen, er tilgjengelig på GitHub.