Video: Encriptacion en Java (Algoritmo Personalizado) - Parte 2 @JoseCodFacilito 2025
Ligesom du ikke kan bruge Java's indbyggede sammenligningsoperatører med datoer, må du måske ikke bruge indbyggede matematiske operatører. I stedet kan du udføre addition og subtraktion på datoer ved hjælp af de forskellige
plus
og
minus
metoder, og du kan bestemme forskellen mellem to datoer ved hjælp af metoden
til
.
Et vigtigt faktum at overveje, når du foretager dato- og tidsberegninger, er, at dato-tid objekter er uforanderlige. Det betyder, at når du opretter et Date-Time-objekt, kan du ikke ændre dens værdi. Når du udfører en beregning på et Date-Time-objekt, er resultatet et nyt Date-Time-objekt med en ny værdi.
Metoden
plus
og
minus
giver dig mulighed for at tilføje forskellige dato- og tidsenheder til et Date-Time-objekt. Der er fire varianter af hver for klassen
LocalDate
, så du kan tilføje eller trække år, måneder, uger og dage til et
LocalDate
objekt. Følgende kode udskriver den aktuelle dato, morgendagens dato og datoen en uge, en måned og et år fra nu:
System. ud. println ("Today:" + LocalDate. now ());
System. ud. println ("Tomorrow:" + LocalDate. now (). plusDays (1));
System. ud. println ("Næste uge:" + LocalDate. now (). plusWeeks (1));
System. ud. println ("Næste måned:" + LocalDate. now (). plusMonths (1));
System. ud. println ("Næste år:" + LocalDate. now (). plusYears (1));
For at bestemme forskellen mellem to datoer skal du bruge metoden
til
. Det beregner forskellen mellem en dato og den dato, der er gået som den første parameter, målt i enhederne angivet ved den anden parameter. F.eks. Bestemmer følgende kode antal dage mellem 16. maj 2014 og 15. december 2014:
LocalDate date1 = LocalDate. parse (”2014/05/16”);
LocalDate date2 = LocalDate. parse (”2014/12/15”);
System. ud. println (dato1. indtil (dato2, ChronoUnit. DAYS));
Nogle datoberegninger kan være lidt mere komplekse. For eksempel overveje en virksomhed, der forbereder fakturaer den 15. i hver måned. Følgende kodestykke viser antallet af dage fra den aktuelle dato til den næste faktureringsdato:
LocalDate today = LocalDate. nu();
LocalDate invDate = LocalDate. af (i dag. getYear (),
i dag. getMonthValue (), 15);
hvis (i dag. GetDayOfMonth ()> 15)
invDate = invDate. plusMonths (1);
lange dageToInvoice = i dag. indtil (invDate,
ChronoUnit. DAYS);
System. ud. println (daysToInvoice
+ "indtil næste faktura dato.”);
Dette eksempel fungerer først ved at hente den aktuelle dato og derefter oprette et nyt
LocalDate
objekt, der repræsenterer den 15. i den aktuelle måned. Så, hvis den aktuelle dag i måneden er større end 15, tilføjer den en måned til faktureringsdatoen. Med andre ord, hvis det er 16. eller senere, sker fakturering den 15. i følgende måned, ikke i denne måned. Derefter bruger den metoden
til
til at bestemme antallet af dage mellem den aktuelle dato og den næste faktureringsdato.
ChronoUnit
er en opregning, der definerer de forskellige tidsenheder, der kan bruges i beregninger af dato og tid. De mulige værdier er:
HENDER
DAGE
DECADES
ERAS
FOREVER
HALF-DAYS
HOURS
MICROS
MILLENNIEN
MILLIS
MINUTTER
MÅNEDER
NANOS
ANDRE
Uger
ÅR
De fleste af disse er selvforklarende, men to af dem er lidt ejendommelige:
-
ERA
angiver om Datoen refererer til den fælles tidsalder (CE, også kendt som AD) eller før Era (BCE, også kendt som BC). -
FOREVER
repræsenterer den største værdi, der kan repræsenteres som en varighed. Desværre vil Java ikke lade dig leve for evigt. Følgende kode kaster en undtagelse:
LocalDate birthday = LocalDate. parse (”1959/05/16);
fødselsdag = fødselsdag. plus (1, ChronoUnit. FOREVER);
Bemærk at
ChronoUni
t er i
java. tid. temporal
-pakke, så sørg for at inkludere følgende sætning øverst i et program, der bruger
ChronoUnit
:
import java. tid. tidsmæssig. *;