Yshopnoosa.com

Hur att beräkna datum skillnad i Java

Hur att beräkna datum skillnad i Java

Beräkna skillnaden mellan två datum i Java 6.0 och tidigare kan vara förrädiskt svårt på grund av behovet av att rymma skottår, skottsekunder, daylight saving gånger och andra justeringar som regelbundet görs kalendern i de flesta länder. Denna handledning ger två lösningar, som inte bör användas i situationer där DST eller skottår kan orsaka allvarliga problem och ett mer sofistikerat alternativ baserat på JSR-310 biblioteket. Detta bibliotek är planerad att vara en del av Java 7.0 API när det släpps i slutet av 2010. Men kan det laddas ner för användning nu.

Instruktioner

Med hjälp av Java 6.0 verktyg

1 Skapa en ny klass med namnet \"DateDifferencer\" och filen namnet \"DateDifferencer.java.\" ge det följande:

/**

Denna klass erbjuder två metoder för att hitta skillnader mellan datumen: en metod som inte svarar skottår och andra datum odditiesbut som är kompatibel med den senaste versionen av Java, som av tidig 2010.A mer sofistikerade version som använder externa JSR-310 biblioteket, som kommer att ingå i Java 7, tack vare för att släppas i slutet av 2010. @author Kevin Walker*/allmän klass DateDifferencer { }

Allt annat kommer att gå inom denna klass skelett.

2 Beräkna antalet millisekunder per dag och förvara den i en konstant för senare användning. Detta är nödvändigt eftersom Java 6.0 och tidigare versioner förstår tid inbyggt i millisekunder eller nanosekunder.

/**

Antalet millisekunder per dag är lika med 1000 millisekunder per second60 sekunder per minute60 minuter per timme 24 timmar per dag*/ offentliga slutliga statisk dubbel MILLISECONDS_IN_DAY = 10006060 * 24.

3 Skapa \"findDifference\" metoden. Se till att Javadoc kommentar anteckningar svagheten i metoden för någon annan som väljer att använda den.

/**

Denna klass används en enkel metod för att beräkna skillnaden mellan två datum. Det är dock inte fulländad. Felaktigheter kan leda på grund av skottår.*@Return antalet dagar skillnaden mellan de två datumen utan korrigering för skottår eller sommartid gång ändras.*/offentliga statisk dubbel findDifference (datum d1, datum d2) { dubbel diff = Math.abs(d2.getTime() - d1.getTime())GÅ

dubbel dagar = diff / MILLISECONDS_IN_DAYGÅ

tillbaka dagarGÅ

}

Detta fungerar genom att hitta skillnaden mellan två datum i millisekunder. Det delar som sedan av antalet millisekunder per dag (som du beräknade i steg 2).

Med JSR-310

4 Placera JSR-310 tid \"jar\" fil i samma katalog som resten av ditt program.

5 Lägga till några mer import till din DateDifferencer klass så du kan ha tillgång till JSR 310 biblioteket.

importera javax.time.DurationGÅimport javax.time.period.Period;

6 Lägga till en ny metod i DateDifferencer klassen.

/**

@return en sträng som beskriver skillnaden mellan de två datumen.*/offentliga statisk String findDifferenceWithJSR (datum start, datum end) {Längd Varaktighet = Duration.durationBetween(start,end)GÅTidstypiska diff = Period.nanos(duration.toNanos())GÅreturnera nya diff.toString()GÅ} Detta skapar en \"Duration\" objekt, som har skillnaden mellan de två datumen. Du kan stanna där och returnera den varaktighet \"toString\" kommandot. Men ger detta svaret i sekunder, som inte är läsbar. Så, det skapar sedan en \"Period\" objekt och använder sin \"toString\" kommandot.