una sumar saber restar para minutos milisegundos fechas fecha faltan entre diferencia dias cuantos convertir comparar calcular java date

sumar - obteniendo la diferencia entre la fecha en días en java



saber cuantos dias faltan para una fecha java (3)

Como this

import java.util.Date; import java.util.GregorianCalendar; /** * DateDiff -- compute the difference between two dates. */ public class DateDiff { public static void main(String[] av) { /** The date at the end of the last century */ Date d1 = new GregorianCalendar(2000, 11, 31, 23, 59).getTime(); /** Today''s date */ Date today = new Date(); // Get msec from each, and subtract. long diff = today.getTime() - d1.getTime(); System.out.println("The 21st century (up to " + today + ") is " + (diff / (1000 * 60 * 60 * 24)) + " days old."); }

}

Aquí hay un artículo sobre aritmética de fecha Java.

Posible duplicado:
cómo calcular la diferencia entre dos fechas usando java

Estoy intentando algo como esto, donde estoy tratando de obtener la fecha de comboboxes

Calendar start = Calendar.getInstance(); Calendar end = Calendar.getInstance(); int Sdate=Integer.parseInt(cmbSdate.getSelectedItem().toString()); int Smonth=cmbSmonth.getSelectedIndex(); int Syear=Integer.parseInt(cmbSyear.getSelectedItem().toString()); int Edate=Integer.parseInt(cmbEdate.getSelectedItem().toString()); int Emonth=cmbEmonth.getSelectedIndex(); int Eyear=Integer.parseInt(cmbEyear.getSelectedItem().toString()); start.set(Syear,Smonth,Sdate); end.set(Eyear,Emonth,Edate); DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String startdate=dateFormat.format(start.getTime()); String enddate=dateFormat.format(end.getTime());

No puedo restar la fecha de finalización y de inicio ¿Cómo obtengo la diferencia entre la fecha de inicio y la fecha de finalización?


Usa JodaTime para esto. Es mucho mejor que el estándar Java DateTime Apis. Aquí está el código en JodaTime para calcular la diferencia en días:

private static void dateDiff() { System.out.println("Calculate difference between two dates"); System.out.println("================================================================="); DateTime startDate = new DateTime(2000, 1, 19, 0, 0, 0, 0); DateTime endDate = new DateTime(); Days d = Days.daysBetween(startDate, endDate); int days = d.getDays(); System.out.println(" Difference between " + endDate); System.out.println(" and " + startDate + " is " + days + " days."); }


Calendar start = Calendar.getInstance(); Calendar end = Calendar.getInstance(); start.set(2010, 7, 23); end.set(2010, 8, 26); Date startDate = start.getTime(); Date endDate = end.getTime(); long startTime = startDate.getTime(); long endTime = endDate.getTime(); long diffTime = endTime - startTime; long diffDays = diffTime / (1000 * 60 * 60 * 24); DateFormat dateFormat = DateFormat.getDateInstance(); System.out.println("The difference between "+ dateFormat.format(startDate)+" and "+ dateFormat.format(endDate)+" is "+ diffDays+" days.");

Esto no funcionará cuando se cruce el horario de verano (o los segundos de salto) como lo señaló orange80 y es posible que no den los resultados esperados cuando se usan diferentes horas del día. Usar JodaTime puede ser más fácil para obtener resultados correctos, ya que la única forma correcta con Java simple que conozco es usar los métodos de agregar y antes / después de Calendar para verificar y ajustar el cálculo:

start.add(Calendar.DAY_OF_MONTH, (int)diffDays); while (start.before(end)) { start.add(Calendar.DAY_OF_MONTH, 1); diffDays++; } while (start.after(end)) { start.add(Calendar.DAY_OF_MONTH, -1); diffDays--; }