imprimir fechas

Iniciado por soy_nicanor, 10 Abril 2017, 22:04 PM

0 Miembros y 1 Visitante están viendo este tema.

soy_nicanor

un ejemplo:
imprimir desde 2017-01-10 hasta 2017-04-30
como resultado debe imprimir:
2017-1-10
2017-1-11
..
..
2017-1-29
2017-1-30
2017-1-31
2017-2-1
2017-2-2
..
..
2017-2-27
2017-2-28
2017-3-1
2017-3-2
..
..
2017-3-30
2017-3-31
2017-4-1
2017-4-2
..
..
2017-4-29
2017-4-30

Gracias por la ayuda

Orubatosu

¿Clase Calendar?

¿O tienes que hacerlo "artesanalmente"?
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998

soy_nicanor

Código (java) [Seleccionar]

        int anoI=2017, mesI=1, diaI=10;
       int anoF=2017, mesF=04, diaF=31;
       int a, m, d;
       for(a=anoI;a<=anoF;a++){
           for(m=mesI;m<=mesF;m++){
               for(d=diaI;d<=diaF;d++){
                   System.out.println(a+"-"+m+"-"+d);
               }
               diaI=1;
           }
           mesI = 1;
       }


Esto no me funciona en 2016-12-20 a 2017-02-10

Orubatosu

#3
Dado que lo quieres hacer "artesanal" deberás de controlar los dias y los meses

Los meses no tienen misterio, sabes que son 12 y no puedes hacer ciclos de mas de 12 meses. Los días del mes podrías definir un array de 12 elementos con los días de cada mes

Por ejemplo: 31, 28, 31, 30, etc.... y comprobar a la hora de añadir días que no se supera en correspondiente a ese elemento.

Rizando el rizo y siendo puntilloso, deberías de hacer comprobaciones sobre los años bisiestos y todo eso.

Pero la clase Calendar te permite hacer eso directamente, debo de suponer que lo que quieres es hacerlo manualmente

Tu sistema con bucles no puede funcionar si el segmento de días que quieres imprimir tiene un final y principio de mes en medio.

Yo lo plantearía de otro modo. Haría un bucle while (uno solo) e iría incrementando el día comprobando que la fecha es correcta. Comprobaría que el día no supera 28, 30 o 31 en función del mes, y si lo hace lo pondría a 1 e incrementaría el mes, cuidando que que el mes no fuera mayor que 12, y si lo es lo pondría a uno incementando entonces el año.

Así hasta que la fecha alcanzara la fecha destino que queremos, momento en el que cambiaría una variable booleana de control para el while y saldría del mismo.
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998