package com.taringamberini.util.date.test; import java.text.SimpleDateFormat; import java.util.GregorianCalendar; /** *

* Calcola i giorni di differenza fra un giorno ed il giorno immediatamente * successivo. Il calcolo è ripetuto per tutte le coppie successive di date dal * 01/01/2003 alla 31/12/2006. *

* * @author Tarin Gamberini - www.taringamberini.com */ public class DifferenzaDate1 { /** *

* Calcola i giorni di differenza nell'intervallo ] dallaDataGC, allaDataGC ]. *

* * @param dallaDataGC * @param allaDataGC * @return Una stringa contenete i giorni fra due date calcolati con la * divisione intera, con la divisione reale e con l'arrotondamento * della divisione reale. */ public String giorniFraDueDate( GregorianCalendar dallaDataGC, GregorianCalendar allaDataGC ) { // conversione in millisecondi long dallaDataMilliSecondi = dallaDataGC.getTimeInMillis(); long allaDataMilliSecondi = allaDataGC.getTimeInMillis(); long millisecondiFraDueDate = allaDataMilliSecondi - dallaDataMilliSecondi; // conversione in giorni con la divisione intera double giorniFraDueDate_DivInt = millisecondiFraDueDate / 86400000; // conversione in giorni con la divisione reale double giorniFraDueDate_DivReal = millisecondiFraDueDate / 86400000.0; // conversione in giorni con arrotondamento della divisione reale double giorniFraDueDate_DivRealRound = Math.round( millisecondiFraDueDate / 86400000.0 ); return giorniFraDueDate_DivInt + "\t" + giorniFraDueDate_DivReal + "\t" + giorniFraDueDate_DivRealRound; } /** *

* Calcola i giorni di differenza fra un giorno ed il giorno immediatamente * successivo. Il calcolo è ripetuto per tutte le coppie successive di date * dal 01/01/2003 alla 31/12/2006. *

*

* Interessanti i risultati nei giorno di cambio fra ora solare/legale e * legale/solare: *

*

*/ public DifferenzaDate1() { SimpleDateFormat sdf = new SimpleDateFormat( "dd/MM/yyyy" ); // dalla data GregorianCalendar dallaDataGC = new GregorianCalendar( 2003, GregorianCalendar.JANUARY, 1 ); // alla data GregorianCalendar allaDataGC = new GregorianCalendar( 2003, GregorianCalendar.JANUARY, 2 ); System.out.println( "] dallaData, allaData ]\t" + "int" + "\t" + "real" + "\t" + "round" ); while ( !sdf.format( allaDataGC.getTime() ).equals( "31/12/2006" ) ) { // calcolo i giorni di differenza fra due date String numGiorni = giorniFraDueDate( dallaDataGC, allaDataGC ); System.out.println( "] " + sdf.format( dallaDataGC.getTime() ) + ", " + sdf.format( allaDataGC.getTime() ) + " ]\t" + numGiorni ); // incremento di un giorno l'intervallo ]dallaData, allaData] dallaDataGC.add( GregorianCalendar.DATE, 1 ); allaDataGC.add( GregorianCalendar.DATE, 1 ); } } public static void main( String[] args ) { new DifferenzaDate1(); } }