Obdobie a trvanie v Jave

1. Prehľad

V tomto rýchlom výučbe sa pozrieme na dve nové triedy pre prácu s dátumami zavedenými v prostredí Java 8: Obdobie a Trvanie.

Obe triedy možno použiť na vyjadrenie určitého času alebo na určenie rozdielu medzi dvoma dátumami. Hlavný rozdiel medzi týmito dvoma triedami je ten Obdobie používa hodnoty založené na dátume, zatiaľ čo Trvanie používa časové hodnoty.

2. Obdobie Trieda

The Obdobie trieda používa jednotky rok, mesiac a deň na vyjadrenie časového obdobia.

Môžeme získať a Obdobie objekt ako rozdiel medzi dvoma dátumami pomocou medzi () metóda:

LocalDate startDate = LocalDate.of (2015, 2, 20); LocalDate endDate = LocalDate.of (2017, 1, 15); Period period = Period.b Between (startDate, endDate);

Potom môžeme pomocou metód určiť dátumové jednotky obdobia getYears (), getMonths (), getDays ():

LOG.info ("Roky:" + period.getYears () + "mesiace:" + period.getMonths () + "dni:" + period.getDays ());

V takom prípade isNegative () metóda, ktorá sa vráti pravda ak je niektorá z jednotiek záporná, možno ju použiť na zistenie, či endDate je vyššia ako dátum začiatku:

assertFalse (period.isNegative ());

Ak isNegative () vráti hodnotu false, potom znak dátum začiatku je skôr ako endDate hodnotu.

Ďalším spôsobom, ako Vytvor Obdobie objekt je založený na počte dní, mesiacov, týždňov alebo rokov pomocou špecializovaných metód:

Obdobie odUnits = Obdobie (3, 10, 10); Obdobie odDays = ObdobieDní (50); Obdobie od mesiacov = Obdobie mesiacov (5); Obdobie odRoky = ObdobieRoky (10); Obdobie odTýždňov = ObdobieTýždňov (40); assertEquals (280, fromWeeks.getDays ());

Ak je prítomná iba jedna z hodnôt, napríklad pomocou ofDays () metódou, potom je hodnota ostatných jednotiek 0.

V prípade ofWeeks () metódou sa hodnota parametra používa na nastavenie počtu dní vynásobením číslom 7.

Môžeme tiež Vytvor Obdobie objekt analýzou textovej sekvencie, ktorý musí mať formát „PnYnMnD“:

Obdobie odCharYears = Period.parse ("P2Y"); assertEquals (2, fromCharYears.getYears ()); Obdobie fromCharUnits = Period.parse ("P2Y3M5D"); assertEquals (5, fromCharUnits.getDays ());

Hodnotu obdobia je možné zvýšiť alebo znížiť pomocou metód formulára plusX () a mínusX (), kde X predstavuje jednotku dátumu:

assertEquals (56, period.plusDays (50) .getDays ()); assertEquals (9, period.minusMonths (2) .getMonths ());

3. Trvanie Trieda

The Trvanie trieda predstavuje časový interval v sekundách alebo nanosekundách a je najvhodnejšia na spracovanie kratšieho času v prípadoch, ktoré si vyžadujú väčšiu presnosť.

Rozdiel medzi dvoma okamihmi môžeme určiť ako a Trvanie objekt pomocou medzi () metóda:

Okamžitý štart = Instant.parse ("2017-10-03T10: 15: 30,00Z"); Okamžitý koniec = Instant.parse ("2017-10-03T10: 16: 30,00Z"); Duration duration = Duration.b Between (začiatok, koniec);

Potom môžeme použiť getSeconds () alebo getNanoseconds () metódy na stanovenie hodnoty časových jednotiek:

assertEquals (60, duration.getSeconds ());

Prípadne môžeme získať inštanciu trvania z dvoch inštancií LocalDateTime:

LocalTime start = LocalTime.of (1, 20, 25, 1024); LocalTime end = LocalTime.of (3, 22, 27, 1544); Duration.b Between (start, end) .getSeconds ();

The isNegative () metódou je možné overiť, či je koncový okamih vyšší ako začiatočný okamih:

assertFalse (duration.isNegative ());

Môžeme tiež získať a Trvanie objekt na základe niekoľkých časových jednotiekpomocou metód ofDays (), ofHours (), ofMillis (), ofMinutes (), ofNanos (), ofSeconds ():

Trvanie odDays = Duration.ofDays (1); assertEquals (86400, fromDays.getSeconds ()); Trvanie fromMinutes = Duration.ofMinutes (60);

Ak chcete vytvoriť Trvanie objekt založený na textovej sekvencii, musí mať tvar „PnDTnHnMn.nS“:

Trvanie odChar1 = Duration.parse ("P1DT1H10M10.5S"); Duration fromChar2 = Duration.parse ("PT10M");

Trvanie je možné previesť na iné časové jednotky použitím toDays (), toHours (), toMillis (), toMinutes ():

assertEquals (1, fromMinutes.toHours ());

Hodnotu trvania je možné zvýšiť alebo znížiť pomocou metód formulára plusX () alebo mínusX (), kde X môže stáť dni, hodiny, millis, minúty, nanos alebo sekundy:

assertEquals (120, duration.plusSeconds (60) .getSeconds ()); assertEquals (30, duration.minusSeconds (30) .getSeconds ());

Môžeme tiež použiť plus() a mínus () metódy s parametrom, ktorý určuje TemporalUnit pridať alebo odčítať:

assertEquals (120, duration.plus (60, ChronoUnit.SECONDS) .getSeconds ()); assertEquals (30, duration.minus (30, ChronoUnit.SECONDS) .getSeconds ());

4. Záver

V tomto tutoriáli sme si ukázali, ako môžeme používať Obdobie a Trvanie triedy.

Celý zdrojový kód príkladov nájdete ako vždy na serveri GitHub.


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