Daar is verskillende maniere om Java -datums te vergelyk. Intern word 'n datum voorgestel as 'n (lang) tydstip - die aantal millisekondes wat sedert 1 Januarie 1970 verstryk het. In Java is Date 'n voorwerp, wat beteken dat dit verskeie vergelykingsmetodes insluit. Elke metode om twee datums te vergelyk, vergelyk die datums se tye in wese.
Stappe
Metode 1 van 4: Die gebruik van comparTo
Stap 1. Gebruik CompareTo
Datum implementeer Vergelykbaar en dus kan twee datums direk met die comparTo -metode vergelyk word. As die datums vir dieselfde tyd is, gee die metode nul. As die datum wat vergelyk word, voor die datumargument is, word 'n waarde van minder as nul teruggegee. As die datum wat vergelyk word, na die datumargument is, word 'n waarde groter as nul teruggegee. As die datums gelyk is, word 'n waarde van 0 teruggegee.
Stap 2. Skep die datumvoorwerpe
U moet elke datumvoorwerp skep voordat u dit kan begin vergelyk. Een manier om dit te doen is om die SimpleDateFormat -klas te gebruik. Dit maak dit maklik om datumwaardes in datumobjekte in te voer.
SimpleDateFormat sdf = nuwe SimpleDateFormat ("jjjj-MM-dd"); // Vir die verklaring van waardes in nuwe datumvoorwerpe. gebruik dieselfde datumformaat wanneer u datums skep Date date1 = sdf.parse ("1995-02-23"); // datum1 is 23 Februarie 1995 Datum datum2 = sdf.parse ("2001-10-31"); // datum2 is 31 Oktober 2001 Datum datum3 = sdf.parse ("1995-02-23"); // datum3 is 23 Februarie 1995
Stap 3. Vergelyk die datumvoorwerpe
Die onderstaande kode wys u elke geval - minder as, gelyk en groter as.
date1.compareTo (date2); // datum1 <datum2, gee minder as 0 datum2.compareTo (datum1); // datum2> datum1, gee meer as 0 datum1.compareTo (datum3); // date1 = date3, so sal 0 na die konsole druk
Metode 2 van 4: Gebruik gelyke, na en voor
Stap 1. Gebruik gelykes, na en voor
Datums kan vergelyk word met die gelykes, na en voor metodes. As twee datums vir dieselfde tydstip is, sal die gelyke metode waar wees. Die voorbeelde gebruik voorheen geskepte datums uit die comparTo -metode.
Stap 2. Vergelyk met behulp van die voor -metode
Die onderstaande kode toon 'n ware en onwaar geval. As datum1 voor datum2 is, voor opbrengs waar. As dit nie die geval is nie, is die opbrengs vals.
System.out.print (datum1.voor (datum2)); // druk ware System.out.print (datum2.voor (datum2)) af; // druk vals af
Stap 3. Vergelyk deur die na -metode te gebruik
Die onderstaande kode toon 'n ware en onwaar geval. As datum2 na datum 1 is, na opbrengste waar. As dit nie die geval is nie, is die opbrengs vals.
System.out.print (datum2.after (datum1)); // druk ware System.out.print (datum1.after (datum2)); // druk vals af
Stap 4. Vergelyk deur die gelyke metode te gebruik
Die onderstaande kode toon 'n ware en onwaar geval. As die datums gelyk is, gee gelyke opbrengs waar. As dit nie die geval is nie, gee gelyke terug as onwaar.
System.out.print (date1.equals (date3)); // druk ware System.out.print (date1.equals (date2)); // druk vals af
Metode 3 van 4: Gebruik die kalenderklas
Stap 1. Gebruik die kalender
Die kalenderklas het ook vergelykbare To, gelyke, na en voor -metodes wat op dieselfde manier werk as hierbo beskryf vir die datumklas. As die datuminligting in 'n kalender gehou word, hoef u dus nie die datum te onttrek net om 'n vergelyking te doen nie.
Stap 2. Skep gevalle van Kalender
Om die kalendermetodes te gebruik, benodig u 'n paar kalender -gevalle. Gelukkig kan u net die tye uit die reeds geskepte Date -gevalle haal.
Kalender cal1 = Calendar.getInstance (); // verklaar cal1 Kalender cal2 = Calendar.getInstance (); // verklaar cal2 Kalender cal3 = Calendar.getInstance (); // verklaar cal3 cal1.setTime (datum1); // pas datum toe op cal1 cal2.setTime (datum2); cal3.setTime (datum3);
Stap 3. Vergelyk cal1 en cal2 met behulp van voor
Die onderstaande kode moet waar druk, aangesien cal1 voor cal2 is.
System.out.print (cal1.before (cal2)); // sal waar druk
Stap 4. Vergelyk cal1 en cal2 met behulp van after
Die onderstaande kode moet onwaar druk, aangesien cal1 voor cal2 is.
System.out.print (cal1.after (cal2)); // druk vals af
Stap 5. Vergelyk cal1 en cal2 deur gelyke te gebruik
Die kode hieronder toon 'n voorbeeld van 'n ware en onwaar geval. Die toestand hang af van die kalendergevalle wat vergelyk word. Die kode moet "waar" druk, dan "onwaar" op die volgende reël.
System.out.println (cal1.equals (cal3)); // druk waar: cal1 == cal3 System.out.print (cal1.equals (cal2)); // druk vals af: cal1! = cal2
Metode 4 van 4: Die gebruik van getTime
Stap 1. Gebruik getTime
Dit is ook moontlik om die tydsduur van twee datums direk te vergelyk, hoewel enige van die vorige benaderings waarskynlik meer leesbaar en dus beter is. Dit sal 'n vergelyking van twee primitiewe datatipes wees, sodat dit gedoen kan word met "" en "==".
Stap 2. Skep die lang tyd voorwerpe
Voordat u die datums kan vergelyk, moet u lang heelgetalle skep met die data van die voorheen geskepte Date -voorwerpe. Gelukkig sal die getTime () -metode die meeste werk vir u doen.
lang tyd1 = getTime (datum1); // verklaar primitiewe tyd1 vanaf datum1 lang tyd2 = getTime (datum2); // verklaar primitiewe tyd2 vanaf datum2
Stap 3. Doen 'n minder as vergelyking
Gebruik die minder as simbool (<) om hierdie twee heelgetalwaardes te vergelyk. Aangesien tyd 1 minder is as tyd 2, moet die eerste boodskap gedruk word. Die ander stelling is ingesluit vir die regte sintaksis.
as (time1 <time2) {System.out.println ("datum1 is voor datum2"); // sal sedert tyd1 <tyd2} anders druk {System.out.println ("datum1 is nie voor datum2"); }
Stap 4. Doen 'n groter as vergelyking
Gebruik die groter as simbool (>) om hierdie twee heelgetalwaardes te vergelyk. Aangesien tyd 1 groter is as tyd 2, moet die eerste boodskap gedruk word. Die ander stelling is ingesluit vir die regte sintaksis.
as (tyd2> tyd1) {System.out.println ("datum2 is na datum1"); // sal druk sedert tyd2> tyd1} anders {System.out.println ("datum2 is nie na datum1"); }
Stap 5. Doen 'n gelyke vergelyking
Gebruik die simbool om te kyk na gelykheid (==) om hierdie twee heelgetalwaardes vir gelykheid te vergelyk. Aangesien tyd 1 gelyk is aan tyd3, moet die eerste boodskap gedruk word. As die program by die ander stelling kom, beteken dit dat die tye nie gelyk is nie.
if (time1 == time2) {System.out.println ("die datums is gelyk"); } anders {System.out.println ("die datums is nie gelyk nie"); // sal sedert tyd1 druk! = tyd2}