Video: Android 101 by Fred Widjaja 2024
Net zoals u de ingebouwde vergelijkingsoperators van Java niet met datums kunt gebruiken, mag u ook geen ingebouwde wiskundige operators gebruiken. In plaats daarvan kunt u optellen en aftrekken op datums met behulp van de verschillende
plus
en
minus
methoden, en u kunt het verschil tussen twee datums bepalen met behulp van de methode
tot
.
Een belangrijk feit om te overwegen bij het uitvoeren van datum- en tijdberekeningen, is dat objecten met datumtijd onveranderlijk zijn. Dat betekent dat wanneer u een Date-Time-object maakt, u de waarde ervan niet kunt wijzigen. Wanneer u een berekening uitvoert op een Date-Time-object, is het resultaat een nieuw Date-Time-object met een nieuwe waarde.
Met de
plus
en
minus
methoden kunt u verschillende datum- en tijdeenheden toevoegen aan een datum-tijdobject. Er zijn vier varianten van elk voor de klasse
LocalDate
, waarmee u jaren, maanden, weken en dagen kunt toevoegen aan of aftrekken van een
LocalDate
-object. Met de volgende code worden de huidige datum, de datum van morgen en de datum van een week, een maand en een jaar vanaf nu afgedrukt:
Systeem. uit. println ("Vandaag:" + LocalDate. now ());
Systeem. uit. println ("Tomorrow:" + LocalDate. now (). plusDays (1));
Systeem. uit. println ("Volgende week:" + LocalDate. now (). plusWeeks (1));
Systeem. uit. println ("Volgende maand:" + LocalDate. now (). plusMonths (1));
Systeem. uit. println ("Volgend jaar:" + LocalDate. now (). plusYears (1));
Gebruik de methode
tot
om het verschil tussen twee datums te bepalen. Het berekent het verschil tussen een datum en de datum die is verstreken als de eerste parameter, gemeten in de eenheden die worden aangegeven door de tweede parameter. De volgende code bepaalt bijvoorbeeld het aantal dagen tussen 16 mei 2014 en 15 december 2014:
LocalDate date1 = LocalDate. ontleden (“2014/05/16”);
LocalDate date2 = LocalDate. ontleden (“2014/12/15”);
Systeem. uit. println (datum1. tot (datum2, ChronoUnit. DAYS));
Sommige datumberekeningen kunnen wat ingewikkelder zijn. Overweeg bijvoorbeeld een bedrijf dat facturen voorbereidt op de 15e van elke maand. In het volgende codefragment wordt het aantal dagen weergegeven vanaf de huidige datum tot de volgende factureringsdatum:
LocalDate today = LocalDate. nu();
LocalDate invDate = LocalDate. van (vandaag. getYear (),
vandaag. getMonthValue (), 15);
if (today. GetDayOfMonth ()> 15)
invDate = invDate. plusMonths (1);
lange dagenToInvoice = vandaag. tot (invDate,
ChronoUnit. DAYS);
Systeem. uit. println (daysToInvoice
+ "tot de volgende factuurdatum.“);
In dit voorbeeld wordt eerst de huidige datum opgehaald en vervolgens een nieuw
LocalDate
-object gemaakt dat de 15e van de huidige maand vertegenwoordigt. Als de huidige dag van de maand groter is dan 15, wordt er een maand aan de factureringsdatum toegevoegd. Met andere woorden, als het de 16e of later is, vindt de facturering plaats op de 15e van de volgende maand en niet van deze maand. Vervolgens wordt de methode
tot
gebruikt om het aantal dagen te bepalen tussen de huidige datum en de volgende factuurdatum.
ChronoUnit
is een opsomming die de verschillende tijdseenheden definieert die kunnen worden gebruikt in datum- en tijdberekeningen. De mogelijke waarden zijn:
CENTURIES
DAGEN
DECADES
ERAS
FOREVER
HALFDAGEN
UREN
MICROS
MILLENNIA
MILLIS
MINUTEN
MAANDEN
NANOS
SECONDEN
WEKEN
JAREN
De meeste hiervan spreken voor zich, maar twee daarvan zijn een beetje vreemd:
-
ERA
geeft aan of de datum verwijst naar de Common Era (CE, ook bekend als AD) of Before Era (BCE, ook bekend als BC). -
FOREVER
vertegenwoordigt de grootste waarde die kan worden weergegeven als een duur. Jammer genoeg laat Java je niet voor altijd leven. De volgende code genereert een uitzondering:
LocalDate birthday = LocalDate. ontleden (“1959/05/16);
verjaardag = verjaardag. plus (1, ChronoUnit. FOREVER);
Merk op dat
ChronoUni
t in de
java is. tijd. tijdelijk
-pakket, dus zorg ervoor dat u de volgende verklaring bovenaan een programma opneemt dat
ChronoUnit
:
java importeert. tijd. tijdelijk. *;