Video: Bring on the learning revolution! | Sir Ken Robinson 2025
På samme måte som du ikke kan bruke Javas innebygde sammenligningsoperatører med datoer, kan du også ikke bruke innebygde matematiske operatører. I stedet kan du utføre tillegg og subtraksjon på datoer ved hjelp av de ulike metodene
pluss
og
minus
, og du kan bestemme forskjellen mellom to datoer ved hjelp av metoden
til
.
Et viktig faktum å vurdere når du gjør dato- og tidsberegninger, er at datatidsobjekter er uforanderlige. Det betyr at når du oppretter et Date-Time-objekt, kan du ikke endre verdien. Når du utfører en beregning på et Date-Time-objekt, er resultatet et nytt Date-Time-objekt med en ny verdi.
Metoden
pluss
og
minus
lar deg legge til ulike dato- og tidsenheter til et Date-Time-objekt. Det er fire varianter av hver for klassen
LocalDate
, slik at du kan legge til eller trekke år, måneder, uker og dager til et
LocalDate
objekt. Følgende kode skriver ut dagens dato, morgendagens dato og datoen en uke, en måned og ett år fra nå:
System. ute. println ("Today:" + LocalDate. now ());
System. ute. println ("Tomorrow:" + LocalDate. now (). plusDays (1));
System. ute. println ("Next week:" + LocalDate. now (). plusWeeks (1));
System. ute. println ("Next month:" + LocalDate. now (). plussMonter (1));
System. ute. println ("Next year:" + LocalDate. now (). plusYears (1));
For å bestemme forskjellen mellom to datoer, bruk
til
metoden. Det beregner forskjellen mellom en dato og datoen som er bestått som den første parameteren, målt i enhetene som er angitt av den andre parameteren. For eksempel bestemmer følgende kode antall dager mellom 16. mai 2014 og 15. desember 2014:
LocalDate date1 = LocalDate. parse (“2014-05-16”);
LocalDate date2 = LocalDate. parse (“2014-12-15”);
System. ute. println (date1. til (date2, ChronoUnit. DAYS));
Noen dataarkninger kan være litt mer komplekse. For eksempel vurdere en virksomhet som forbereder fakturaer den 15. i hver måned. Følgende kodestykke viser antall dager fra gjeldende dato til neste faktureringsdato:
LocalDate today = LocalDate. nå();
LocalDate invDate = LocalDate. av (idag. getYear (),
i dag. getMonthValue (), 15);
hvis (i dag. GetDayOfMonth ()> 15)
invDate = invDate. plusMonths (1);
lange dagerToInvoice = i dag. til (invDate,
ChronoUnit. DAYS);
System. ute. println (daysToInvoice
+ "til neste faktura dato.“);
Dette eksempelet fungerer først ved å få dagens dato, og deretter oppretter du et nytt
LocalDate
objekt som representerer den 15. i den aktuelle måneden. Hvis den nåværende dagen i måneden er større enn 15, legger den til en måned til faktureringsdatoen. Med andre ord, hvis det er 16. eller senere, skjer fakturering den 15. i følgende måned, ikke denne måneden. Deretter bruker den metoden
til
for å bestemme antall dager mellom nåværende dato og neste faktureringsdato.
ChronoUnit
er en oppsummering som definerer de ulike tidsenheter som kan brukes i dato og klokkeslettberegninger. De mulige verdiene er:
HENDER
DAGER
DECADES
ERAS
FOREVER
HALF-DAYS
HOURS
MICROS
MILLENNIA
MILLIS
MINUTTER
MÅNEDER
NANOS
ANDRE
Uker
ÅR
De fleste av disse er selvforklarende, men to av dem er litt merkelige:
-
ERA
angir om Datoen refererer til Common Era (CE, også kjent som AD) eller før Era (BCE, også kjent som BC). -
FOREVER
representerer den største verdien som kan representeres som en varighet. Dessverre vil Java ikke la deg leve for alltid. Følgende kode kaster et unntak:
LocalDate birthday = LocalDate. parse (“1959-05-16);
bursdag = bursdag. pluss (1, ChronoUnit. FOREVER);
Merk at
ChronoUni
t er i
java. tid. temporal
-pakke, så vær så snill å ta med følgende utsagn øverst på et hvilket som helst program som bruker
ChronoUnit
:
import java. tid. timelig. *;
