Código de Java - Cálculo de días entre dos fechas

Imágen de perfil

Cálculo de días entre dos fechasgráfica de visualizaciones


Java

estrellaestrellaestrellaestrellaestrella(1)
Actualizado el 11 de Mayo del 2017 por darknessman666 (Publicado el 10 de Mayo del 2017)
2.207 visualizaciones desde el 10 de Mayo del 2017. Una media de 35 por semana
Con este código, realizado en Java para consola, podemos calcular el número de días que hay entre dos fechas que introduciremos por pantalla. El código realiza validaciones sobre las fechas para que sean lógicas. En siguientes versiones incorporaremos más validaciones, reformateos de las fechas y más cosas que se me ocurran o pidáis.

Salu2 desde el infierno

1.0
estrellaestrellaestrellaestrellaestrella(1)

Actualizado el 16 de Julio del 2017 (Publicado el 10 de Mayo del 2017)gráfica de visualizaciones de la versión: 1.0
2.208 visualizaciones desde el 10 de Mayo del 2017. Una media de 35 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

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
91
92
93
94
95
96
97
98
99
100
101
102
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import java.util.StringTokenizer;
 
public class CalDias {
 
	public static void main(String[] args) throws ParseException {
//* Definimos la variable para almacenar la fecha menor
		String D_FEC_INI = "";
//* Definimos la variable para almacenar la fecha mayor
        String D_FEC_FIN = "";
//* Definimos la variable para almacenar la fecha a verificar
        String VERIF_FECHA = "";
//* Limpiamos la pantalla. Ya que no existe comando, instertamos lineas en blanco a la consola
		for (int i=0; i<200;i++)
		System.out.println();
//* Se define el formato de las fechas
		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
//* Bienvenida al programa
		System.out.println ("*------------------------------------------*");
		System.out.println (" BIENVENIDO AL CALCULO DE DIAS ENTRE FECHAS ");
		System.out.println ("*------------------------------------------*");
//* Solicitamos la fecha
        System.out.println ("Introduzca Fecha Inicial (en formato YYYY-MM-DD) :");
//* Aceptamos la fecha introducida por pantalla
        Scanner entradaEscaner = new Scanner (System.in);
//* Movemos la fecha a la variable definida
        D_FEC_INI = entradaEscaner.nextLine ();
//* Verificamos el formato de la variable si se corresponde con YYYY-MM-DD
		Date fechaInicial=dateFormat.parse(D_FEC_INI);
//* Llamamos al procedimiento de verificacion de fechas
		verificar(D_FEC_INI);
//* Solicitamos la segunda fecha
        System.out.println ("Introduzca Fecha Final (en formato YYYY-MM-DD) :");
//* Movemos la segunda fecha a la variable definida
        D_FEC_FIN = entradaEscaner.nextLine ();
//* Verificamos el formato de la variable si se corresponde con YYYY-MM-DD		
		Date fechaFinal=dateFormat.parse(D_FEC_FIN);
//* Llamamos al procedimiento de verificacion de fechas
		verificar(D_FEC_FIN);
//* Se calcula el numero de dias entre las dos fechas
		int dias=(int) ((fechaFinal.getTime()-fechaInicial.getTime())/86400000);
//* Linea en blanco 
		System.out.println("");
//* Se muestra por pantalla el resultado de la operacion
		System.out.println("Entre el "+D_FEC_INI+" y el "+D_FEC_FIN+" existen "+dias+" dias de diferencia");
	}
	private static void verificar(String VERIF_FECHA){
	System.out.println("");
	System.out.println("Verificamos la fecha enviada "+VERIF_FECHA);
		String DATA[] = VERIF_FECHA.split("-");
		String DIA = DATA[2];
		String MES = DATA[1];
		String ANY = DATA[0];
		System.out.println("DIA: "+DIA);
		System.out.println("MES :"+MES);
		System.out.println("ANY :"+ANY);
		System.out.println("");
 
		switch(MES){
			case "01":
			case "03":
			case "05":
			case "07":
			case "08":
			case "10":
			case "12":
				if (Integer.valueOf(DIA) >= 1 && Integer.valueOf(DIA) <= 31)
					break;
				else
					System.out.println("La fecha "+VERIF_FECHA+" es incorrecta. El mes "+MES+" no tiene dia "+DIA+". La operacion no sera correcta");
					System.out.println("FINALIZAMOS EL PROGRAMA ANTES DE TIEMPO POR ERROR DE DATOS A LA ENTRADA");
					System.exit(0);
				break;
			case "04":
			case "06":
			case "09":
			case "11":
				if (Integer.valueOf(DIA) >= 1 && Integer.valueOf(DIA) <= 30)
					break;
				else
					System.out.println("La fecha "+VERIF_FECHA+" es incorrecta. El mes "+MES+" no tiene dia "+DIA+". La operacion no sera correcta");
					System.out.println("FINALIZAMOS EL PROGRAMA ANTES DE TIEMPO POR ERROR DE DATOS A LA ENTRADA");
					System.exit(0);
				break;
			case "02":
				if (Integer.valueOf(DIA) >= 1 && Integer.valueOf(DIA) <= 29)
					break;
				else
					System.out.println("La fecha "+VERIF_FECHA+" es incorrecta. El mes "+MES+" no tiene dia "+DIA+". La operacion no sera correcta");
					System.out.println("FINALIZAMOS EL PROGRAMA ANTES DE TIEMPO POR ERROR DE DATOS A LA ENTRADA");
					System.exit(0);
				break;
			default:
				System.out.println("En mes "+MES+" no existe. Los calculos no seran correctos");
				System.out.println("FINALIZAMOS EL PROGRAMA ANTES DE TIEMPO POR ERROR DE DATOS A LA ENTRADA");
				System.exit(0);
		}
	}
}



Comentarios sobre la versión: 1.0 (1)

Monde
02 de Octubre del 2017
estrellaestrellaestrellaestrellaestrella
Con tratamiento de excepciones y años bisiestos estaría más completo. Saludos!
Responder

Comentar la versión: 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s3986  
Revisar política de publicidad