Video: Universal Basic Income Explained – Free Money for Everybody? UBI 2024
Așa cum nu puteți utiliza operatorii de comparare încorporați ai Java cu date, este posibil să nu utilizați operatori matematici încorporați. În schimb, puteți efectua adăugarea și scăderea datelor utilizând diferite metode
plus
și
minus
și puteți determina diferența dintre două date utilizând metoda
până la
.
Un factor important de luat în considerare la efectuarea calculelor datei și orei este că obiectele Date-Time sunt imuabile. Aceasta înseamnă că, odată ce creați un obiect Date-Time, nu îl puteți modifica. Când efectuați un calcul pe un obiect Date-Time, rezultatul este un nou obiect Date-Time cu o nouă valoare.
plus
și
minus
vă permit să adăugați diferite unități de dată și oră unui obiect Date-Time. Există patru variante fiecare pentru clasa
LocalDate
, permițându-vă să adăugați sau să scăpați anii, luni, săptămâni și zile la un obiect
LocalDate
. Următorul cod imprimă data curentă, ziua de mâine și data de o săptămână, o lună și un an de acum:
Sistem. out. println ("Astăzi:" + LocalDate acum ());
System. out. println ("Săptămâna viitoare:" + LocalDate. acum () plusWeeks (1));
System. out. println ("luna viitoare:" + LocalDate acum () plusMonths (1));
System. out. println ("Anul viitor:" + LocalDate. acum () plusYears (1));
Pentru a determina diferența dintre două date, utilizați metoda
până la
. Acesta calculează diferența dintre o dată și data trecută ca primul parametru, măsurată în unitățile indicate de al doilea parametru. De exemplu, următorul cod determină numărul de zile între 16 mai 2014 și 15 decembrie 2014:
LocalDate date2 = LocalDate. analiza („2014-12-15“);
System. out. println (data1 până la (data2, ChronoUnit. DAYS));
Unele calcule date pot fi un pic mai complexe. De exemplu, luați în considerare o afacere care pregătește facturi pe data de 15 a fiecărei luni. Următorul fragment de cod afișează numărul de zile de la data curentă până la următoarea dată de facturare:
LocalDate today = LocalDate. acum();
LocalDate invDate = LocalDate. din (astăzi getYear (),
astăzi getMonthValue (), 15);
dacă (astăzi getDayOfMonth ()> 15)
invDate = invDate. plusMonths (1);
zile lungiToInvoice = astăzi. până la (invDate,
ChronoUnit. DAYS);
System. out. println (daysToInvoice
+ "până la următoarea dată factură.„);
Acest exemplu lucrează mai întâi la obținerea datei curente, apoi la crearea unui nou obiect
LocalDate
care reprezintă 15 din luna curentă. Apoi, dacă ziua curentă a lunii este mai mare de 15, se adaugă o lună la data facturării. Cu alte cuvinte, dacă este a 16-a sau ulterioară, facturarea are loc pe 15 din
după lună, nu din această lună. Apoi utilizează metoda până la
pentru a determina numărul de zile dintre data curentă și următoarea dată de facturare.
ChronoUnit
este o enumerare care definește diferitele unități de timp care pot fi utilizate la calculele datei și orei. Valorile posibile sunt:
CENTURI
ZILE
DECATE
ERAS
FOREVER
DAUNE
ORE
MICROS
MILLENNIA < MINUTE
LUNI
NANOS
SECONI
SĂPTĂMÂNĂ
ANI
Cele mai multe dintre acestea sunt explicite, dar două sunt puțin ciudate:
ERA
data se referă la Era Comună (CE, cunoscută și sub numele de AD) sau Înainte de Era (BCE, cunoscută și sub numele BC).
FOREVER
-
reprezintă cea mai mare valoare care poate fi reprezentată ca durată. Din păcate, Java nu te va lăsa să trăiești pentru totdeauna. Următorul cod aruncă o excepție:
Data nașterii LocalDate = LocalDate. analiza („1959-05-16); -
ziua de naștere = ziua de naștere. plus (1, ChronoUnit, FOREVER);
Rețineți că
ChronoUni
t este în java
. timp. temporar
, deci asigurați-vă că includeți următoarea declarație în partea de sus a oricărui program care utilizează
ChronoUnit
:
import java. timp. temporal. *;