2012-04-12 37 views
8

¿Cómo podemos agregar o restar fecha en java? Por ejemplo, java.sql.Date y formateado de esta manera: aaaa-MM-dd, ¿cómo puedo agregar 5 meses a partir de eso? He visto en algún tutorial que están usando Calendar, ¿podemos establecer la fecha en él? Por favor ayuda.Suma y resta de fechas en Java

Ejemplo: 2012-01-01 cuando se agrega 5 meses se convertirá en 2012-06-01.

PD: Soy un programador de .Net y estoy aprendiendo poco a poco el entorno de Java.

Respuesta

12

En primer lugar usted tiene que convertir su fecha de String a java.util.Date, de lo que tiene que utilizar java.util.Calendar para manipular fechas. También es posible hacer cálculos matemáticos con millis, pero no lo recomiendo.

public static void main(final String[] args) throws ParseException { 
    final String sdate = "2012-01-01"; 
    final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
    final Date date = df.parse(sdate); // conversion from String 
    final java.util.Calendar cal = GregorianCalendar.getInstance(); 
    cal.setTime(date); 
    cal.add(GregorianCalendar.MONTH, 5); // date manipulation 
    System.out.println("result: " + df.format(cal.getTime())); // conversion to String 
} 
2

Uso Calendar

Calendar cal = Calendar.getInstance(); 
cal.add(Calendar.MONTH, 5); 
+0

Sir qué hace 'getInstance'? ¿Cómo puedo configurarlo para '2012-01-01'? –

+0

'getInstance()' es un método de fábrica que iniciará el calendario con la fecha y hora actual del sistema, puede usar el método 'setTime()' para establecer cualquier fecha, consulte java doc –

4

Stear claro de la clase de fecha incorporada para la fecha de matemáticas. Eche un vistazo a JodaTime, que tiene una API mucho mejor para este tipo de cosas.

0

O bien, convierta la fecha a la vez en milis. Haga los cálculos y convierta los millis a una fecha.

1

Para convertir una fecha en un calendario, utilice:

Date date = your_date_here; 

Calendar cal = Calendar.getInstance(); 
cal.setTime(date); 

continuación, utilizar el calendario de las funciones aritméticas para sumar/restar:

cal.add(Calendar.MONTH, 5); 
0

uso CalenderUtils del paquete de Google GWT.

import com.google.gwt.user.datepicker.client.CalendarUtil; 

...

//now 
Date d = new Date(); 
// Now + 2 months 
CalendarUtil.addMonthsToDate(d, 2); 
+3

Su propuesta de agregar 5 meses a una fecha es para agregar el conjunto de GWT a un proyecto? – dty

0

Otra opción es la clase DateUtils de la tercera parte de Apache Commons colección de la biblioteca. Ejemplo:

Date d = DateUtils.parseDate("2012-01-01", "yyyy-MM-dd"); 
Date d2 = DateUtils.addMonths(d, 5); 
System.out.println("Old date + 5 months = " + d2); 
-1
+0

¿Qué pasa si el enlace se rompió? – Parixit

+1

como señaló @Parixit, normalmente tratamos de explicar las grandes líneas de enlaces como esa. Si el enlace alguna vez falla, su respuesta se vuelve inútil para la comunidad. Si pudieras editarlo para agregar las partes importantes, sería una respuesta válida :) thx ^^ – Patrice