10/04/2013, 16:57
|
| | | Fecha de Ingreso: enero-2011
Mensajes: 40
Antigüedad: 14 años Puntos: 3 | |
Respuesta: Sumar un mes en java Cita:
Iniciado por henrri pude darle solución y pongo el código para que alguien los use algún día.
Código:
// <editor-fold defaultstate="collapsed" desc="Haga clic en el signo + para mostrar descripción">
/**
* Genera las fechas de letras
*
* @param fechaInicio
* @param numeroLetras
* @return array con las fechas programdas para el pago
*/
// </editor-fold>
public List generarFechaLetrasMensuales(Date fechaInicio, int numeroLetras) {
List fechaLetras = new ArrayList<Object>();
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy"); //tipo de formato de salida
Calendar c = Calendar.getInstance();
c.set(fechaInicio.getYear() + 1900, fechaInicio.getMonth(), fechaInicio.getDate()); //seteamos la fecha de inicio
if (fechaInicio.getDate() < 29) { //si la fecha es menor a 29 retornamos el mismo mes siempre.
fechaLetras.add(formato.format(c.getTime()));
for (int i = 1; i < numeroLetras; i++) {
c.add(Calendar.MONTH, 1);
fechaLetras.add(formato.format(c.getTime()));
}
return fechaLetras;
}
if (fechaInicio.getDate() == 29) { //para el caso de fecha 29 retornaremos los meses de febrero con fecha 28
fechaLetras.add(formato.format(c.getTime()));
for (int i = 1; i < numeroLetras; i++) {
c.add(Calendar.MONTH, 1);
if (c.getTime().getMonth() == 1) {
if (((c.getTime().getYear() + 1900) % 4 == 0) && (((c.getTime().getYear() + 1900) % 100 != 0) || ((c.getTime().getYear() + 1900) % 400 == 0))) {
fechaLetras.add("29/02/" + (c.getTime().getYear() + 1900));
} else {
fechaLetras.add("28/02/" + (c.getTime().getYear() + 1900));
}
} else {
fechaLetras.add("29/" + (c.getTime().getMonth() < 9 ? ("0" + (c.getTime().getMonth() + 1)) : (c.getTime().getMonth() + 1)) + "/" + (c.getTime().getYear() + 1900));
}
}
}
if (fechaInicio.getDate() == 30) { //retornareos el mes de febrero con fecha 28
fechaLetras.add(formato.format(c.getTime()));
for (int i = 1; i < numeroLetras; i++) {
c.add(Calendar.MONTH, 1);
if (c.getTime().getMonth() == 1) {
if (((c.getTime().getYear() + 1900) % 4 == 0) && (((c.getTime().getYear() + 1900) % 100 != 0) || ((c.getTime().getYear() + 1900) % 400 == 0))) {
fechaLetras.add("29/02/" + (c.getTime().getYear() + 1900));
} else {
fechaLetras.add("28/02/" + (c.getTime().getYear() + 1900));
}
} else {
fechaLetras.add("30/" + (c.getTime().getMonth() < 9 ? ("0" + (c.getTime().getMonth() + 1)) : (c.getTime().getMonth() + 1)) + "/" + (c.getTime().getYear() + 1900));
}
}
}
if (fechaInicio.getDate() == 31) { // retornaremos con 28, 30,31 segun sean los meses
fechaLetras.add(formato.format(c.getTime()));
for (int i = 1; i < numeroLetras; i++) {
c.add(Calendar.MONTH, 1);
if (c.getTime().getMonth() == 1) {
if (((c.getTime().getYear() + 1900) % 4 == 0) && (((c.getTime().getYear() + 1900) % 100 != 0) || ((c.getTime().getYear() + 1900) % 400 == 0))) {
fechaLetras.add("29/02/" + (c.getTime().getYear() + 1900));
} else {
fechaLetras.add("28/02/" + (c.getTime().getYear() + 1900));
}
}
if (c.getTime().getMonth() == 3 || c.getTime().getMonth() == 5
|| c.getTime().getMonth() == 8 || c.getTime().getMonth() == 10) {
fechaLetras.add("30/" + (c.getTime().getMonth() < 9 ? ("0" + (c.getTime().getMonth() + 1)) : (c.getTime().getMonth() + 1)) + "/" + (c.getTime().getYear() + 1900));
}
if (c.getTime().getMonth() == 0 || c.getTime().getMonth() == 2
|| c.getTime().getMonth() == 4 || c.getTime().getMonth() == 6
|| c.getTime().getMonth() == 7 || c.getTime().getMonth() == 9
|| c.getTime().getMonth() == 11) {
fechaLetras.add("31/" + (c.getTime().getMonth() < 9 ? ("0" + (c.getTime().getMonth() + 1)) : (c.getTime().getMonth() + 1)) + "/" + (c.getTime().getYear() + 1900));
}
}
}
return fechaLetras;
}
tarde fue mi reaacion...
Código:
public List generarFechaLetrasMensuales(Date fechaInicio, int numeroLetras) {
List fechaLetras = new ArrayList<Object>();
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy"); //tipo de formato de salida
Calendar c = Calendar.getInstance();
for(int i=0;i<numeroLetras;i++){
c.set(fechaInicio.getYear() + 1900, fechaInicio.getMonth(), fechaInicio.getDate()); //seteamos la fecha de inicio
c.add(Calendar.MONTH, i);
fechaLetras.add(formato.format(c.getTime()));
}
return fechaLetras;
}
__________________ consigue un trabajo que te guste y nunca mas volverás a trabajar... |