Het berekenen van de verschillen tussen de twee data in Java 6.0 en eerder kan vanwege de noodzaak om schrikkeljaren tegemoet te komen, sprong seconden , zomertijd tijden en andere aanpassingen regelmatig naar de kalender die in de meeste bedrieglijk moeilijk zijn landen . Deze tutorial geeft twee oplossingen , een die niet mag worden gebruikt voor situaties waar DST of schrikkeljaren ernstige problemen en een meer geavanceerde optie op basis van de JSR - 310 library kan veroorzaken . Deze bibliotheek is gepland om een deel van de Java 7.0 API zijn wanneer het wordt uitgebracht in eind 2010 . Het kan echter worden gedownload voor gebruik nu . Wat je nodig hebt Computer Java JSR - 310 ( optioneel ) Toon Meer Aanwijzingen gebruik van Java 6.0 Gereedschap 1 Creëer een nieuwe klasse met de naam " DateDifferencer " en de bestandsnaam " DateDifferencer.java . " Geef het de volgende skelet : /*** Deze klasse zullen twee methoden voor het vinden van verschillen tussen de datum door te geven : * - Een native methode die niet goed zijn voor schrikkeljaren en andere datum eigenaardigheden * maar dat compatibel met de nieuwste versie van Java , met ingang van begin 2010 * - . . Een meer geavanceerde versie die gebruik maakt van de externe JSR - 310 bibliotheek , * die zal worden opgenomen in Java 7 , zal worden uitgebracht in eind 2010 ** @ author Kevin Walker * /public class DateDifferencer { } Al het andere zal gaan binnen deze klasse skelet . kopen van 2 Bereken het aantal milliseconden in een dag en opslaan in een constante voor later gebruik . Dit is nodig omdat Java 6.0 en eerdere versies begrijpen tijd native in milliseconden of nanoseconden . /*** Het aantal milliseconden in een dag is gelijk aan 1000 milliseconden per seconde * 60 seconden per minuut * 60 minuten per uur * 24 uur per dag * / public final static double MILLISECONDS_IN_DAY = 1000 * 60 * 60 * 24 ; 3 Maak de " findDifference " -methode . Zorg ervoor dat de reactie Javadoc merkt de zwakte in de methode voor iedereen die ervoor kiest om het te gebruiken . /*** Deze klasse maakt gebruik van een eenvoudige methode om het verschil tussen twee datums berekenen . * Het is echter niet onberispelijk . Onjuistheden kunnen leiden vanwege schrikkeljaren . ** @ Return het aantal dagen verschil tussen de twee data zonder correctie voor schrikkeljaren of zomertijd verandert . * /Public static double findDifference ( Datum d1 , Datum d2 ) { dubbele diff = Math.abs ( d2.getTime ( ) - d1.getTime ( ) ) ; dubbel dagen | = diff /MILLISECONDS_IN_DAY ; terugkomdagen ; } Dit werkt door het vinden van het verschil tussen de twee data in milliseconden . Het verdeelt vervolgens dat door het aantal milliseconden in een dag (die je berekend in stap 2 ) . Behulp JSR - 310 Plaats 4 de JSR - 310 Time " jar " -bestand in dezelfde map als de rest van uw programma . 5 Voeg een paar meer invoer aan uw DateDifferencer klas , zodat u toegang tot de JSR 310 bibliotheek kan hebben . import javax.time.Duration , import javax.time.period.Period ; . 6 Voeg een nieuwe methode om uw DateDifferencer klas /*** @ return een string beschrijven van het verschil tussen de twee data * /public static String findDifferenceWithJSR ( Datum start , Datum einde ) { duur duration = Duration.durationBetween ( begin , einde ) ; . Periode diff = Period.nanos ( duration.toNanos ( ) ) ; terugkeer nieuwe diff.toString ( ) ; } Dit creëert een " Duration " object, dat het verschil tussen de twee datums houdt . Je zou daar te stoppen en terug te keren " toString " commando van de Duur 's . Echter, dit geeft het antwoord in termen seconden , wat niet leesbaar . Dus, het maakt dan een "Periode" object en gebruikt zijn " toString " commando .
|