Pdf downloaden Pdf downloaden

Er zijn verscheiden manieren om datums te vergelijken in Java. Intern wordt een datum gerepresenteerd als een (long) punt in de tijd – het aantal milliseconden dat is verstreken sinds 1 januari 1970. In Java is datum het object Date, wat inhoudt dat het meerdere methoden (methods) behelst voor het vergelijken van datums. Elke methode voor het vergelijken van twee datums zal in principe de verstreken tijd van beide datums vergelijken.

Methode 1
Methode 1 van 4:

De opdracht 'compareTo' gebruiken

Pdf downloaden
  1. Date implementeert Comparable<Date> en dus kunnen twee datums direct met elkaar worden vergeleken met de methode compareTo. Als de datums hetzelfde moment in de tijd aangeven, zal de methode nul retourneren. Indien de datum waarmee vergeleken wordt voor het datum-argument ligt, dan zal er een negatieve waarde worden geretourneerd. Indien de datum waarmee wordt vergeleken een latere datum is dan die van het datum-argument, dan zal er een positieve waarde worden geretourneerd. Indien de datums gelijk zijn, zal er een nul worden geretourneerd. [1]
  2. Je zult elk datum-object moeten creëren voor je ze kunt gaan vergelijken. Een manier om dit te doen is door de klasse SimpleDateFormat toe te passen. Hiermee kun je gemakkelijk datums invoeren in Date-objecten.
       SimpleDateFormat 
       sdf 
       = 
       new 
       SimpleDateFormat 
       ( 
       ' 
       yyyy 
       - 
       MM 
       - 
       dd 
       ' 
       ); 
       //Voor het declareren van waarden in nieuwe datum-objecten. Gebruik dezelfde datumindeling bij het creëren van datums 
       Date 
       datum1 
       = 
       sdf 
       . 
       parse 
       ( 
       ' 
       1995 
       - 
       02 
       - 
       23 
       ' 
       ); 
       //datum1 is 23 februari, 1995 
       Date 
       datum2 
       = 
       sdf 
       . 
       parse 
       ( 
       ' 
       2001 
       - 
       10 
       - 
       31 
       ' 
       ); 
       //datum2 is 31 oktober, 2001 
       Date 
       datum3 
       = 
       sdf 
       . 
       parse 
       ( 
       ' 
       1995 
       - 
       02 
       - 
       23 
       ' 
       ); 
       //datum3 is 23 februari, 1995 
      
  3. De onderstaande toont elk geval – minder dan, gelijk aan en groter dan.
       datum1 
       . 
       compareTo 
       ( 
       datum2 
       ); 
       //datum1 < datum2, kleiner dan 0 
       datum2 
       . 
       compareTo 
       ( 
       datum1 
       ); 
       //datum2 > datum1, retourneert groter dan 0 
       datum1 
       . 
       compareTo 
       ( 
       datum3 
       ); 
       //datum1 = datum3, retourneert 0 
      
    Advertentie
Methode 2
Methode 2 van 4:

De methoden 'equals, after en before' gebruiken

Pdf downloaden
  1. Datums kunnen met elkaar worden vergeleken volgens de methoden equals, after en before. Indien twee datums dezelfde tijd aangeven, dan zal de equals-methode 'true' retourneren. De voorbeelden gebruiken de eerder gemaakte datums via de compareTo-methode. [2]
  2. De onderstaande code toont een geval van true en false. Indien datum1 eerder is dan datum2, dan is het resultaat true. Indien dit niet het geval is, dan retourneert before de waarde false.
       System 
       . 
       out 
       . 
       print 
       ( 
       datum1 
       . 
       before 
       ( 
       datum2 
       )); 
       //print true 
       System 
       . 
       out 
       . 
       print 
       ( 
       datum2 
       . 
       before 
       ( 
       datum2 
       )); 
       //print false 
      
  3. De onderstaande code toont een geval van true en false. Indien datum2 later komt dan datum1, dan retourneert after de waarde true. Indien dit niet het geval is, dan retourneert after de waarde false.
       System 
       . 
       out 
       . 
       print 
       ( 
       datum2 
       . 
       after 
       ( 
       datum1 
       )); 
       //print true 
       System 
       . 
       out 
       . 
       print 
       ( 
       datum1 
       . 
       after 
       ( 
       datum2 
       )); 
       //print false 
      
  4. De onderstaande code toont een geval van true en false. Indien de datums gelijk zijn, retourneert equals de waarde true. Zijn ze dat niet, dan retourneert equals de waarde false.
       System 
       . 
       out 
       . 
       print 
       ( 
       datum1 
       . 
       equals 
       ( 
       datum3 
       )); 
       //print true 
       System 
       . 
       out 
       . 
       print 
       ( 
       datum1 
       . 
       equals 
       ( 
       datum2 
       )); 
       //print false 
      
    Advertentie
Methode 3
Methode 3 van 4:

De klasse Calendar gebruiken

Pdf downloaden
  1. De Calendar-klasse beschikt ook over de methoden compareTo, equals, after en before, die op dezelfde manier werken als hierboven beschreven voor de datum-klasse. Dus als de datumgegevens in een kalender worden bijgehouden, is het niet nodig om 'date' uit te pakken, alleen maar om twee datums te vergelijken. [3]
  2. Om de Calendar-methoden te gebruiken, heb je enkele Calendar-instanties nodig. Gelukkig kun je de tijd gebruiken zoals gegenereerd door de Date-instanties.
       Calendar 
       cal1 
       = 
       Calendar 
       . 
       getInstance 
       (); 
       //declareert cal1 
       Calendar 
       cal2 
       = 
       Calendar 
       . 
       getInstance 
       (); 
       //declareert cal2 
       Calendar 
       cal3 
       = 
       Calendar 
       . 
       getInstance 
       (); 
       //declareert cal3 
       cal1 
       . 
       setTime 
       ( 
       datum1 
       ); 
       //past datum toe op cal1 
       cal2 
       . 
       setTime 
       ( 
       datum2 
       ); 
       cal3 
       . 
       setTime 
       ( 
       datum3 
       ); 
      
  3. De onderstaande code geeft true omdat cal1 eerder is dan cal2.
       System 
       . 
       out 
       . 
       print 
       ( 
       cal1 
       . 
       before 
       ( 
       cal2 
       )); 
       //print true 
      
  4. De onderstaande code geeft false als waarde, omdat cal1 eerder is dan cal2.
       System 
       . 
       out 
       . 
       print 
       ( 
       cal1 
       . 
       after 
       ( 
       cal2 
       )); 
       //print false 
      
  5. De onderstaande code toont een voorbeeld van zowel true als false. De voorwaarde is afhankelijk van de Calendar-instanties die worden vergeleken. De onderstaande code geeft 'true' en daarna 'false' op de volgende regel.
       System 
       . 
       out 
       . 
       println 
       ( 
       cal1 
       . 
       equals 
       ( 
       cal3 
       )); 
       //print true: cal1 == cal3 
       System 
       . 
       out 
       . 
       print 
       ( 
       cal1 
       . 
       equals 
       ( 
       cal2 
       )); 
       //print false: cal1 != cal2 
      
    Advertentie
Methode 4
Methode 4 van 4:

De methode 'getTime' gebruiken

Pdf downloaden
  1. Het is ook mogelijk om twee tijdstippen direct te vergelijken, hoewel elk van de voorgaande benaderingen waarschijnlijk beter leesbare resultaten zal opleveren en dus de voorkeur heeft. Dit is een vergelijking van twee primitieve gegevenstypes, en kan dus gedaan worden met '<', '>' en '=='.
  2. Voor je datums kunt vergelijken, moet je long-integers maken vanuit de gegevens van de hiervoor gemaakte Date-objecten. Gelukkig zal de getTime()-methode het meeste werk voor je doen.
       long 
       time1 
       = 
       getTime 
       ( 
       datum1 
       ); 
       //declareert primitieve time1 van datum1 
       long 
       time2 
       = 
       getTime 
       ( 
       datum2 
       ); 
       //declareert primitieve time2 van datum2 
      
  3. Gebruik een ‘kleiner-dan’-symbool (<) om deze twee integer-waarden te vergelijken. Omdat tijd1 kleiner is dan tijd2, zou het eerste bericht geprint moeten worden op het scherm. Het else-statement wordt meegenomen voor de juiste syntax.
       if 
       ( 
       tijd1 
       < 
       time2 
       ){ 
       System 
       . 
       out 
       . 
       println 
       ( 
       ' 
       datum1 
       is 
       eerder 
       dan 
       datum2 
       ' 
       ); 
       //print omdat tijd1 < tijd2 
       } 
       else 
       { 
       System 
       . 
       out 
       . 
       println 
       ( 
       ' 
       datum1 
       is 
       later 
       dan 
       of 
       gelijk 
       aan 
       datum2 
       ' 
       ); 
       } 
      
  4. Gebruik het ‘groter dan’-symbool (>) om deze twee integers met elkaar te vergelijken. Omdat tijd1 groter is dan tijd2, wordt het eerste bericht op het scherm geprint. Het else-statement wordt meegenomen voor een correcte syntax.
       if 
       ( 
       tijd2 
       > 
       tijd1 
       ){ 
       System 
       . 
       out 
       . 
       println 
       ( 
       ' 
       datum2 
       komt 
       na 
       datum1 
       ' 
       ); 
       // print omdat tijd2 > tijd1 
       } 
       else 
       { 
       System 
       . 
       out 
       . 
       println 
       ( 
       ' 
       datum2 
       is 
       eerder 
       dan 
       of 
       gelijk 
       aan 
       datum1 
       ' 
       ); 
       } 
      
  5. Gebruik het symbool (==) om deze twee integers te vergelijken. Omdat tijd1 gelijk is aan tijd3, zou het eerste bericht geprint moeten worden. Indien het programma bij het else-statement komt, dan betekent dit dat de tijden niet aan elkaar gelijk zijn. [4]
       if 
       ( 
       tijd1 
       == 
       tijd2 
       ){ 
       System 
       . 
       out 
       . 
       println 
       ( 
       ' 
       De 
       datums 
       zijn 
       gelijk 
       ' 
       ); 
       } 
       else 
       { 
       System 
       . 
       out 
       . 
       println 
       ( 
       ' 
       De 
       datums 
       zijn 
       niet 
       gelijk 
       ' 
       ); 
       //print omdat tijd1 != tijd2 
       } 
      
    Advertentie

Over dit artikel

Deze pagina is 2.316 keer bekeken.

Was dit artikel nuttig?

Advertentie