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 (2)