Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/04/2013, 16:57
Avatar de henrri
henrri
 
Fecha de Ingreso: enero-2011
Mensajes: 40
Antigüedad: 14 años
Puntos: 3
Respuesta: Sumar un mes en java

Cita:
Iniciado por henrri Ver Mensaje
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...