Práca s dátumami v Kotline

1. Úvod

V tomto rýchlom výučbe sa dozvieme o práci s dátumami v Kotline.

Budeme sa na to pozerať Dátum-súvisiace operácie, ako je vytváranie, formátovanie a manipulácia s dátumami.

2. Vytvorenie dátumu

Najrýchlejší spôsob vytvorenia a Dátum objekt používa LocalDate‘S analyzovať () metóda:

var date = LocalDate.parse ("12.12.2018")

The analyzovať () metóda predvolene používa štandardný formát dátumu rrrr-MM-dd.

Môžeme tiež odovzdať náš vlastný formát na analýzu reťazca dátumu:

var formatter = DateTimeFormatter.ofPattern ("dd-MM-rrrr") var date = LocalDate.parse ("31-12-2018", formátovač)

A ak potrebujeme väčšiu kontrolu, môžeme výslovne uviesť rok, deň a mesiac použitím LocalDate‘S z () metóda:

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

3. Formátovanie dátumu

Ďalej sa pozrime, ako môžeme naformátovať naše objekty dátumu späť Struny.

Predvolený spôsob formátovania dátumu pomocou predvoleného formátu v Kotlin sa odvoláva na metóda toString ().

Vytvorme si rande

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

a pozrite sa na predvolený výstup použitia natiahnuť:

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

Zdá sa to čitateľné, pretože výstupný formát je rrrr-MM-dd, ale znova bude pravdepodobne potrebné formátovať dátum do vlastných formátov v závislosti od našich prípadov použitia.

Na formátovanie nášho dátumu do rôznych formátov môžeme použiť LocalDate‘S formát () metóda a dodáme mu náš vlastný formát pomocou DateTimeFormatter:

var formatter = DateTimeFormatter.ofPattern ("dd-MMMM-rrrr") var formattedDate = date.format (formátovač)

Takto sa zobrazí pekne naformátovaný dátum:

assertThat (formattedDate) .isEqualTo („31. decembra 2018“)

4. Extrakcia komponentov dátumu

LocalDate poskytuje mnoho metód, z ktorých môžeme extrahovať konkrétne komponenty Dátum.

Niektoré z nich sú dosť malicherné, napríklad vyťaženie roku, mesiaca alebo dňa z čísla a Dátum:

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

Môžeme tiež extrahovať ďalšie informácie, napríklad era, dayOfTheWeek alebo dayOfTheMonth:

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

5. Spolupráca s Obdobie

Na záver sa pozrime na spoluprácu Obdobia v Kotline.

Obdobia predstavujú vzdialenosť na časovej osi. Môžeme vytvoriť Obdobie použitím ObdobieTriedna továrenská metóda:

var period = Period.of (1, 2, 3)

Tak vznikne a Obdobie 1 rok, 2 mesiace a 3 dni.

Ak chcete pridať toto Obdobie k existujúcemu dátumu používame LocalDate‘S plus() metóda:

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

Týmto sa k uvedenému dátumu pridá 1 rok, 2 mesiace a 3 dni a vytvorí sa upravený dátum:

assertThat (modifiedDate) .isEqualTo ("2019-08-28")

Podobne môžeme odpočítať a Obdobie od daného dátumu:

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

Podľa očakávania bude upravený dátum:

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

Môžeme tiež použiť Periódy na vyjadrenie vzdialenosti medzi dvoma dátumami.

Predpokladajme, že máme dva dátumy, presne od seba vzdialené 6 mesiacov:

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

Teraz môžeme vzdialenosť medzi týmito dvoma dátumami reprezentovať pomocou obdobia medzi metóda:

var period = Obdobie.medzi (dátum1, dátum2)

The obdobie premenná vyprodukuje nasledujúce:

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

P znamenať Obdobie a 6 mil znamená 6 mesiacov.

6. Záver

V tomto článku sme sa naučili základy práce s Datesom v Kotline.

Pozreli sme sa na to, ako pomocou rôznych metód vytvárať inštancie dátumu a ako formátovať objekty dátumu späť do čitateľných textov.

Ďalej sme sa zamerali na extrakciu komponentov z Dátum predmety a nakoniec ako s nimi pracovať Obdobia v Kotline.

Kód použitý v tejto príručke je k dispozícii na GitHub.


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