|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Apr 2004
Messaggi: 364
|
[Java] Calcolare differenza di giorni
Salve ragazzi, sto cercando di fare un metodo che prende come parametro una data e calcola quanti giorni di differenza ci sono tra questa data è quella di oggi, purtroppo il mio metodo da dei problemi quando la data inserita ha un mese diverso da quello di oggi, per esempio calcolando che oggi è il 25 ottobre, se dico che la data a cui fare il calcolo è il primo novembre, il metodo mi dice che ci sono 6 giorni di differenza, invece di 7, ho paura che forse ci siamo problemi con i mesi che sono di 31 giorni, comunque posto il mio metodo con la speranza che qualcuno mi aiuti, se avete altre soluzioni mi fareste un grande favore, grazie
![]() Codice:
public void convert(int annoDataFin, int meseDataFin, int giornoDataFin) { Calendar calendario= new GregorianCalendar(); int annodata = calendario.get(Calendar.YEAR); int mesedata = calendario.get(Calendar.MONTH)+1; int giornodata = calendario.get(Calendar.DAY_OF_MONTH); Calendar today = new GregorianCalendar(annodata, mesedata, giornodata); Calendar dataFin = new GregorianCalendar(annoDataFin, meseDataFin, giornoDataFin); long difInDays = ((today.getTime().getTime()-dataFin.getTime().getTime())/(1000*60*60*24)); System.out.println("La differenza e' " +difInDays); } |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
mmmmmmmm...
ho provato in questo momento a scrivere una classettina di utilità (sfruttando il TDD anke x questa cazzatina tanto x imparare qualkosa... ![]() cmq dai un okkiatina al mio codice.... così dovrebbe funzionare almeno nei poki casi in cui l'ho provato.... Codice:
package calendar; import java.util.Calendar; public final class CalendarUtility { private final static double SECONDS = 1000; private final static double MINUTES = 60; private final static double HOURS = 60; private final static double DAYS = 24; private CalendarUtility() { } public static long daysBeetween(Calendar startDate, Calendar endDate){ long startTime = startDate.getTimeInMillis(); long endTime = endDate.getTimeInMillis(); double msecDiff = endTime - startTime; long daysDiff = Math.round(msecDiff / SECONDS / MINUTES / HOURS / DAYS); daysDiff = Math.abs(daysDiff); return daysDiff; } }
__________________
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
|
Innanzitutto:
Codice:
public GregorianCalendar(int year, int month, int dayOfMonth) Constructs a GregorianCalendar with the given date set in the default time zone with the default locale. Parameters: year - the value used to set the YEAR calendar field in the calendar. month - the value used to set the MONTH calendar field in the calendar. Month value is 0-based. e.g., 0 for January. dayOfMonth - the value used to set the DAY_OF_MONTH calendar field in the calendar. Codice:
import java.util.*; import static java.util.Calendar.*; public class CalendarTest { public static void main(String[] args) { Calendar now = Calendar.getInstance(); Calendar when = new GregorianCalendar(2005, 0, 1); // '01/01/2005' int days = now.get(DAY_OF_YEAR) - when.get(DAY_OF_YEAR); System.out.println(days); } }
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer °SetiEmperor°| Ninja Technologies { qualunque cosa sia, è veloce e fa male (cit.) } |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
ehm...
così ti ritorna il giorno dell'anno... x anni diversi come fai??? col mio metodo facevo la trasformazione in millisecondi per superare appunto questa limitazione....
__________________
![]() |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
|
Quote:
![]()
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer °SetiEmperor°| Ninja Technologies { qualunque cosa sia, è veloce e fa male (cit.) } |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:01.