Skip to content

Instantly share code, notes, and snippets.

@sanrodari
Created March 27, 2012 19:32
Show Gist options
  • Save sanrodari/2219536 to your computer and use it in GitHub Desktop.
Save sanrodari/2219536 to your computer and use it in GitHub Desktop.
Problema validacion fecha
package com.example;
import javax.swing.JOptionPane;
public class ValidacionFecha {
public static void main(String[] args) {
String entrada = JOptionPane.showInputDialog("Ingrese el dia");
int dia = Integer.parseInt(entrada);
entrada = JOptionPane.showInputDialog("Ingrese el mes");
int mes = Integer.parseInt(entrada);
// Es valido. Si el dia esta en el rango [1,30] y el mes en el rango [1,12]
if( (dia >= 1 && dia <= 30) && (mes >= 1 && mes <= 30) ){
JOptionPane.showMessageDialog(null, "Es valida la fecha");
}
else{
JOptionPane.showMessageDialog(null, "No es valida la fecha");
}
}
}
@milogom
Copy link

milogom commented May 20, 2019

mes no debe ser mayor que 12, aun así las comprobaciones no serían correctas... prueba con algo así...
modifica los joptionpane porque sacan los datos de arrays cerrados, textos en las cabeceras y mensajes, etc.

public String validarFecha() {
boolean validar = false;
int dia;
int mes = 0;
int año;
int checkdia;
int checkmes;
int checks;

	do {
		checkdia = 0;
		checkmes = 0;
		checks = 0;
		dia = Integer.parseInt((String) JOptionPane.showInputDialog(null, textocuerpodia, textocabecera, JOptionPane.QUESTION_MESSAGE, null, listadias, listadias[0]));
		String mesletra = (String) JOptionPane.showInputDialog(null, textocuerpomes, textocabecera, JOptionPane.QUESTION_MESSAGE, null, listameses, listameses[0]);
		año = Integer.parseInt((String) JOptionPane.showInputDialog(null, textocuerpoaño, textocabecera, JOptionPane.QUESTION_MESSAGE, null, listaaños, listaaños[0]));
		
		if (mesletra.equals("Enero") || mesletra.equals("Marzo") || mesletra.equals("Mayo") || mesletra.equals("Julio") || mesletra.equals("Agosto") || mesletra.equals("Octubre") || mesletra.equals("Diciembre")) {
            if (dia <= 31) {
                checkdia++;
            }
        } else if (mesletra.equals("Abril") || mesletra.equals("Junio") || mesletra.equals("Septiembre") || mesletra.equals("Noviembre")) {
            if (dia <= 30) {
                checkdia++;
            }
        } else if (mesletra.equals("Febrero")) {
            if (año % 4 == 0 && año % 100 != 0 || año % 400 == 0) {
                if (dia <= 29) {
                    checkdia++;
                }
            } else {
                if (dia <= 28) {
                    checkdia++;
                }
            }
        }
		
		for (int i=0; i<listameses.length; i++) {
			if (listameses[i].equals(mesletra)) {
				mes = i+1;
			}
		}
		
        if (mes <= 12 && mes> 0) {
            checkmes++;
        }

        checks = checkdia + checkmes;
        if (checks == 2) {
            JOptionPane.showMessageDialog(null, "La fecha es correcta", textocabecera, 1);
            validar = true;
        }
        else
        {
            JOptionPane.showMessageDialog(null, "La fecha es incorrecta", textocabecera, 1);
            validar = false;
        }
        
	} while (validar == false);
	
	return (año + "-" + mes + "-" + dia);
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment