Java - Contador de años, meses y dias en mi programa de periodos

   
Vista:

Contador de años, meses y dias en mi programa de periodos

Publicado por Daniel Jesus (4 intervenciones) el 09/09/2014 17:26:30
Hola pues hise este programa donde me dice el periodo de tiempo de una fecha inicio y una final, ahora le pregunto al usuario si quiere ingresar otro periodo cuando da que `s` (si) lo agrega el periodo pero este quiero que se sume con anterior por ejemplo le agrego lo siguiente:

16/08/1993 - 09/09/2014 = 21 años, 0 meses, 24 dias
14/02/1995 - 18/05/2001 = 6 años, 3 meses, 35 dias
____________________________________________
Total:..........................................27 años, 3 meses y 59 dias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
public void diferencia(){
            char seguir=0;
            Scanner teclado =new Scanner(System.in);
            do{
            System.out.println("DIA/MES/AÑO ");
            System.out.println("Escribe la primer fecha: ");
            String fechaInicio = teclado.next();
            System.out.println("Escribe la segunda fecha: ");
            String fechaActual = teclado.next();
                                //dia/mes/año
//            String fechaInicio = "16/08/1993";
//            String fechaActual = "09/09/2014";
            String[] aFechaIng = fechaInicio.split("/");
            Integer diaInicio = Integer.parseInt(aFechaIng[0]);
            Integer mesInicio = Integer.parseInt(aFechaIng[1]);
            Integer anioInicio = Integer.parseInt(aFechaIng[2]);
 
            String[] aFecha = fechaActual.split("/");
            Integer diaActual = Integer.parseInt(aFecha[0]);
            Integer mesActual = Integer.parseInt(aFecha[1]);
            Integer anioActual = Integer.parseInt(aFecha[2]);
 
//            System.out.println("Dia actual: " + diaActual);
//            System.out.println("Mes actual: " + mesActual);
//            System.out.println("Año actual: " + anioActual);
            int b = 0;
            int dias = 0;
            int mes = 0;
            int anios = 0;
            int meses = 0;
            mes = mesInicio - 1;
//            se comprueba que el anio sea bisiesto si es divisible entre 4 o 400
            if(mes==2){
                if ((anioActual % 4 == 0) && ((anioActual % 100 != 0) || (anioActual % 400 == 0))){
                b = 29;
                }else{
                b = 28;
                }
            }else if(mes <= 7){
                if(mes == 0){
                b = 31;
                }else if(mes % 2==0){
                b = 30;
                }else{
                b = 31;
                }
            }else if(mes > 7){
                if(mes % 2 == 0){
                b = 31;
                }else{
                b = 30;
                }
            }
            if((anioInicio > anioActual) || (anioInicio == anioActual && mesInicio > mesActual) ||
            (anioInicio == anioActual && mesInicio == mesActual && diaInicio > diaActual)){
//                Diferentes tipos de errores al escribir las fechas
                System.out.println("La fecha de inicio debe ser anterior a la fecha Actual");
            }else{ //Se procede a hacer el calculo de los periodos de tiempo
                if(mesInicio <= mesActual){
                    anios = anioActual - anioInicio;
                    if (diaInicio <= diaActual){
                    meses = mesActual - mesInicio;
                    dias = b - (diaInicio - diaActual);
                    }else{
                    if(mesActual == mesInicio){
                    anios = anios - 1;
                    }
                    meses = (mesActual - mesInicio - 1 + 12) % 12;
                    dias = b - (diaInicio - diaActual);
                    }
                }else{
                    anios = anioActual - anioInicio - 1;
                    System.out.println("Años?¿: " + anios);
                    if(diaInicio > diaActual){
                    meses = mesActual - mesInicio - 1 + 12;
                    dias = b - (diaInicio - diaActual);
                    }else{
                    meses = mesActual - mesInicio + 12;
                    dias = diaActual -diaInicio;
                    }
                }
            }
 
            System.out.println("Años: "+anios);
            System.out.println("Meses: "+meses);
            System.out.println("Días: "+dias);
            System.out.println("Desea agregar otro periodo? ");
            seguir = teclado.next().charAt(0);
            }while(seguir!='n');
    }//Termina metodo difer
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder