4 manieren om twee datums in Java te vergelijken

Inhoudsopgave:

4 manieren om twee datums in Java te vergelijken
4 manieren om twee datums in Java te vergelijken

Video: 4 manieren om twee datums in Java te vergelijken

Video: 4 manieren om twee datums in Java te vergelijken
Video: Your First Java Program | Java | Tutorial 3 2024, November
Anonim

Er zijn veel manieren om twee datums in de programmeertaal Java te vergelijken. In computers wordt een datum weergegeven door een getal (het gegevenstype Lang) in tijdseenheden -- dat wil zeggen, het aantal milliseconden dat is verstreken sinds 1 januari 1970. In Java is Datum een object, wat betekent dat het verschillende methoden om vergelijkingen te maken. Elke methode die wordt gebruikt om twee datums te vergelijken, is in wezen het vergelijken van de tijdseenheden van de twee datums.

Stap

Methode 1 van 4: CompareTo. gebruiken

4301351 1
4301351 1

Stap 1. Gebruik CompareTo

Het Date object implementeert Comparable zodat 2 data direct met elkaar vergeleken kunnen worden met de CompareTo methode. Als beide datums hetzelfde aantal in tijdseenheden hebben, retourneert de methode nul. Als de tweede datum kleiner is dan de eerste, wordt een waarde kleiner dan nul geretourneerd. Als de tweede datum groter is dan de eerste, retourneert de methode een waarde die groter is dan nul. Als beide datums hetzelfde zijn, retourneert de methode een null-waarde.

4301351 2
4301351 2

Stap 2. Maak meerdere Date-objecten aan

U moet meerdere Date-objecten maken voordat u ze kunt vergelijken. Een van de gemakkelijkste manieren om dit te doen, is door de klasse SimpleDateFormat te gebruiken. Deze klasse maakt het gemakkelijk om een ingevoerde datumwaarde om te zetten in een Date-object.

    SimpleDateFormat sdf = nieuw SimpleDateFormat ("jjjj-MM-dd"). Om een waarde in een nieuwe ''Objectdatum'' te declareren, gebruikt u dezelfde datumnotatie bij het maken van de datum. Datum datum1 = sdf.parse("1995-02-23"); //date1 is 23 februari 1995 Datum date2 = sdf.parse ("2001-10-31"); //date2 is 31 oktober 2001 Datum date3 = sdf.parse("1995-02-23"); //datum3 is 23 februari 1995

4301351 3
4301351 3

Stap 3. Vergelijk de Date-objecten

De volgende code toont u voorbeelden voor elk geval - kleiner dan, gelijk aan en groter dan.

    datum1.vergelijkenTo(datum2); //date1 < date2, retourneert een waarde kleiner dan 0 date2.compareTo(date1); //date2 > date1, retourneert een waarde groter dan 0 date1.compareTo(date3); // date1 = date3, dus het zal 0 uitvoeren op console

Methode 2 van 4: Gelijk aan, na en ervoor gebruiken

4301351 4
4301351 4

Stap 1. Gebruik is gelijk aan, na en voor

Datums kunnen worden vergeleken met behulp van de equals, after en before-methoden. Als twee datums dezelfde waarde in de tijd hebben, retourneert de methode equals true. In het volgende voorbeeld wordt het object Date gebruikt dat is gemaakt in de voorbeeldmethode CompareTo.

4301351 5
4301351 5

Stap 2. Vergelijk met de vorige methode

De volgende code toont een voorbeeldgeval dat true en false retourneert. Als date1 een datum vóór date2 is, retourneert de methode before true. Anders retourneert de methode before false.

    Systeem.uit.print(datum1.voor(datum2)); // toon de waarde ''true'' System.out.print(date2.before(date2)); // retourneer de waarde ''false''

4301351 6
4301351 6

Stap 3. Vergelijk met behulp van de na-methode

De volgende code toont een voorbeeldgeval dat true en false retourneert. Als date2 de datum na date1 is, retourneert de methode after true. Anders retourneert de methode after false.

    System.out.print(date2.after(date1)); // toon de waarde ''true'' System.out.print(date1.after(date2)); // toon de waarde ''false''

4301351 7
4301351 7

Stap 4. Vergelijk met is gelijk aan methode

De volgende code toont een voorbeeldgeval dat true en false retourneert. Als beide datums gelijk zijn, retourneert de methode equals true. Anders retourneert de methode equals false.

    System.out.print(date1.equals(date3)); // toon de waarde ''true'' System.out.print(date1.equals(date2)); // toon de waarde ''false''

Methode 3 van 4: Klassenkalender gebruiken

4301351 8
4301351 8

Stap 1. Gebruik Klaskalender

De klasse Calendar heeft ook CompareTo, equals, after en before methoden die hetzelfde werken als de methoden die eerder zijn beschreven voor de klasse Date. Dus als de datuminformatie is opgeslagen in een klaskalender, hoeft u de datum niet alleen te extraheren om een vergelijking te maken.

4301351 9
4301351 9

Stap 2. Maak een exemplaar van Calendar

Als u methoden in Class Calendar wilt gebruiken, moet u meerdere Calendar-instanties maken. Gelukkig kun je de waarden uit een eerder aangemaakte Date-instantie gebruiken.

    Kalender cal1 = Kalender.getInstance(); // declareren cal1 Kalender cal2 = Calendar.getInstance (); //declare cal2 Calendar cal3 = Calendar.getInstance(); // declareren cal3 cal1.setTime (datum1); // zet de datum in cal1 cal2.setTime (date2); cal3.setTime(datum3);

4301351 10
4301351 10

Stap 3. Vergelijk cal1 en cal2 met behulp van de vorige methode

De volgende code geeft de waarde van tr. weer

    Systeem.uit.print(cal1.before(cal2)); // zal de waarde ''true'' retourneren

4301351 11
4301351 11

Stap 4. Vergelijk cal1 en cal2 met behulp van de na-methode

De volgende code retourneert false omdat cal1 de datum is vóór cal2.

    Systeem.uit.print(cal1.after(cal2)); // retourneer de waarde ''false''

4301351 12
4301351 12

Stap 5. Vergelijk cal1 en cal2 met behulp van de equals-methode

De volgende code toont een voorbeeldgeval dat true en false retourneert. De status is afhankelijk van het exemplaar van Calendar dat wordt vergeleken. De volgende code retourneert de waarde "true" en vervolgens "false" op de volgende regel.

    Systeem.uit.println(cal1.equals(cal3)); // retourneer de waarde ''true'': cal1 == cal3 System.out.print(cal1.equals(cal2)); // retourneer de waarde ''false'': cal1 != cal2

Methode 4 van 4: GetTime gebruiken

4301351 13
4301351 13

Stap 1. Gebruik getTime

U kunt de tijdseenheidwaarden van twee datums ook rechtstreeks vergelijken, hoewel de vorige twee methoden misschien gemakkelijker te lezen zijn en de voorkeur hebben. Op deze manier vergelijk je 2 primitieve datatypes, zodat je de operanden "", en "==" kunt gebruiken.

4301351 14
4301351 14

Stap 2. Maak een tijdobject in het lange getalformaat

Voordat u datums kunt vergelijken, moet u een Long Integer-waarde maken op basis van het eerder gemaakte Date-object. Gelukkig doet de methode getTime() het voor je.

    lange tijd1 = getTime(datum1); // declareer primitieve tijd1 van datum1 lange tijd2 = getTime (datum2); // declareer primitieve tijd2 waarde van datum2

4301351 15
4301351 15

Stap 3. Voer een minder dan vergelijking uit

Gebruik de operand kleiner dan (<) om deze twee gehele waarden te vergelijken. Aangezien time1 kleiner is dan time2 zal het eerste bericht verschijnen. De else-instructie is opgenomen om de syntaxis te voltooien.

    if(time1 < time2){ System.out.println("datum1 is de datum vóór datum2"); // wordt weergegeven omdat time1 < time2 } else{ System.out.println ("datum1 is geen datum vóór datum2"); }

4301351 16
4301351 16

Stap 4. Voer een groter dan vergelijking uit

Gebruik de operand groter dan (>) om deze twee gehele waarden te vergelijken. Omdat time1 groter is dan time2 zal het eerste bericht verschijnen. De else-instructie is opgenomen om de syntaxis te voltooien.

    if(time2 > time1){ System.out.println("datum2 is de datum na datum1"); // wordt weergegeven omdat time2 > time1 } else{ System.out.println ("date2 is not the date after date1"); }

4301351 17
4301351 17

Stap 5. Voer een gelijken-vergelijking uit

Gebruik de operandfunctie om de gelijkheid van waarden (==) te controleren om deze twee gehele getallen te vergelijken. Aangezien tijd1 gelijk is aan tijd3, zal het eerste bericht verschijnen. Als de programmastroom in de else-instructie gaat, betekent dit dat de twee tijden niet dezelfde waarde hebben.

    if(time1 == time2){ System.out.println("beide datums zijn hetzelfde"); } else{ System.out.println("De 1e is niet hetzelfde als de 2e"); // wordt weergegeven omdat time1 != time2 }

Aanbevolen: