Restar días a fecha actual en Java
Esta es una de las tareas mas comunes que nos encontramos cuando estamos en aplicaciones que requieren algun tipo de tareas con fechas.
En el ejemplo de abajo lo que se quiere es tomar la fecha del dia de ayer y no la actual. Entonces, la metodología adecuada sería que tomaramos el dia actual y que le restemos un dia, claro, hay que tomar en cuenta que el tiempo en el calendario de java se rige a partir de milisengundo, es por eso que lo que haremos será tomar los milisenguntos torales al dia de hoy y restarle los milisenguntos totales que tiene un dia:
int diferenciaEnDias = 1; Date fechaActual = Calendar.getInstance().getTime(); long tiempoActual = fechaActual.getTime(); long unDia = diferenciaEnDias * 24 * 60 * 60 * 1000; Date fechaAyer = new Date(tiempoActual - unDia); System.out.println(fechaAyer.toString());
• diferenciaEnDias almacena la diferencia de dias que queresmos restar a la fecha actual, en este ejemplo queresmos la fecha de ayer, entonces se asigna un 1
• fechaActual es objeto de tipo Date que tiene la fecha actual
• tiempoActual almacena los milisengundos totales de la fechaActual
• unDia es el total de milisegundos que tiene un dia, para ello se multiplica la cantidad de segundos de un minuto (60), cantidad de minutos en una hora (60), cantidad de horas en un dia (24) y la cantidad de dias de diferencia a la fecha actual (diferenciaEnDias (1) )
A partir de la diferencia de tiempoActual – unDia se foma la nueva fecha con los milisegundos como producto, ya que el constructor de Date permite construir fechas a partir de milisegundos
new Date(long milisegundos);
Para finalizar se imprime la fecha de ayer.
Cual es la mejor manera para obtener el día, la fecha o el mes de ese resultado? Pregunto porque fechaAyer.getMonth() esta tachado (@deprecated) y ademas retorna cualquier cosa.
Muchisimas gracias, me ha sido de ayuda, ahora solo me falta solucionar la resta de meses y años!
Os agradesco mucho!
Puedes ver un ejemplo de como manejar las fechas con java en
http://www.programandoconcafe.com/2011/03/java-manejo-de-fechas-javautildate.html
Espero les sirva, saludos
gracias !! muy bueno, me fue util,pense que Java tenia una biblioteca para ello ,pero no la tenia y el codigo suyo es elegante