Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [JAVA] Calcolare differenza tra due date

    salve a tutti...
    mi servirebbe sapere (naturalmente in java) come posso calcolare da differenza in giorni tra due date...

    naturalmente la funzione deve tenere conto dei mesi + lunghi e mesi + corti e dell'anno bisestile...ci dovrebbe essere qualcosa di già fatto ma non riesco a trovarlo....

    grazie.
    io uso il GregorianCalendar e le Date

    PS
    inoltre non so perchè ma ho riscontrato un piccolo problema con il GregorianCalendar...se gli provo ad inserire una data del tipo 28/02/2005 lui invece che 28 mi considera 31....

    e così mi sbaglia anche il calcolo del giorno della settimana...

    fatemi sapere al più presto, ogni aiuto è prezioso...grazie. :rollo:
    Let's your dream came true!

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Avevo del codice pronto da una vecchia risposta, giocaci un po' (non è un buon esempio di programmazione).

    codice:
    import java.text.*;
    import java.util.*;
    
    public class dateFormatTest {
    
      private Date myDate;
      private SimpleDateFormat df;
      private long longTime;
    
      public dateFormatTest(String s, String pattern) {
        try {
          df = new SimpleDateFormat(pattern);
          myDate = df.parse(s);
          longTime = myDate.getTime();      
        }
        catch (Exception e) { 
          System.out.println("Errore nel parsing della data "+e.toString());
        }
      }
      
      public static long differenceLong(dateFormatTest one, dateFormatTest two) {
        return one.longTime-two.longTime;
      }
      
      public static String differenceDay(dateFormatTest one, dateFormatTest two) {
        return "Giorni: "+(differenceLong(one, two)/(3600*24*1000));
      }
    
      public static void main(String args[]) {
        dateFormatTest dft1 = new dateFormatTest("10/02/2005", "dd/MM/yyyy");
        dateFormatTest dft2 = new dateFormatTest("10/02/2004","dd/MM/yyyy");
        System.out.println(differenceDay(dft1, dft2));
      }
    }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    ma così non tiene conto dei bisestili e neanche dei mesi più corti o sbaglio?
    Let's your dream came true!

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    tiene conto di tutto. Tant'è che di proposito ho messo in mezzo un anno bisestile e la funzione ritorna correttamente 366 giorni di differenza

    oooooooops
    tu intendevi che potresti inserire, che so, 30 febbraio come data?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Del fatto che l'anno sia o meno bisestile etc... tiene conto il SimpleDateFormat
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  6. #6
    perfetto grazie...proverò...
    Let's your dream came true!

  7. #7
    ho fatto un merge del tuo esempio e del mio caso ed è venuto fuori questo...

    codice:
    public long DateDiff(Data Data)
    	{return ((this.getTime()-Data.getTime())/(3600*24*1000));}
    	
    public long getTime() {return m_Calendar.getTime().getTime();}
    perfettamente funzionante, grazie.
    Let's your dream came true!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.