Java - Solicitar al usuario una fecha (dd:mm:aaaa) y comprobar si es correcta.

 
Vista:
Imágen de perfil de Alberto

Solicitar al usuario una fecha (dd:mm:aaaa) y comprobar si es correcta.

Publicado por Alberto (1 intervención) el 09/03/2017 03:29:19
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
package proyecto1_unidad1;
 
import java.util.*;
import javax.swing.*;
 
public class Proyecto2_Unidad1 {
 
    public static void main(String[] args) {
        String dia = String.valueOf(JOptionPane.showInputDialog("Introduce el dia"));
        int d = Integer.parseInt(dia);
        String mes = String.valueOf(JOptionPane.showInputDialog("Introduce el mes"));
        int m = Integer.parseInt(mes);
        String año = String.valueOf(JOptionPane.showInputDialog("Introduce el año")).trim();
        int a = Integer.parseInt(año);
        int sd = 0, sm = 0, sa = 0, s;
        if (mes.equals("01") || mes.equals("03") || mes.equals("05") || mes.equals("07") || mes.equals("08") || mes.equals("10") || mes.equals("12")) {
            if (d <= 31) {
                sd++;
            }
        } else if (mes.equals("04") || mes.equals("06") || mes.equals("09") || mes.equals("11")) {
            if (d <= 30) {
                sd++;
            }
        } else if (mes.equals("02")) {
            if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0) {
                if (d <= 29) {
                    sd++;
                }
            } else {
                if (d <= 28) {
                    sd++;
                }
            }
 
        }
        if (m <= 12 && m > 0) {
            sm++;
        }
        if (a > 0) {
            sa++;
        }
        s = sa + sm + sd;
        if (s == 3) {
            JOptionPane.showMessageDialog(null, "La fecha es correcta");
        }
        else
        {
            JOptionPane.showMessageDialog(null, "La fecha es incorrecta");
        }
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder

Solicitar al usuario una fecha (dd:mm:aaaa) y comprobar si es correcta.

Publicado por Nicolas (1 intervención) el 11/09/2018 22:38:19
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
package ifcondicionalanidadaconoperadoreslogicos;
import java.util.Scanner;
public class Eje03 {
    public static void main(String[] args) {
        Scanner leer=new Scanner(System.in);
 
        int d,m,a;
 
        System.out.print("Ingrese su dia: ");
        d=leer.nextInt();
        System.out.print("Ingrese su mes: ");
        m=leer.nextInt();
        System.out.print("Ingrese su año: ");
        a=leer.nextInt();
 
 
        if(d>=1&&d<=31){
            if(m>=1&&m<=12){
                if(a>=0&&a<=9999){
                    System.out.println("Fecha correcta");
                    System.out.println("El dia es: "+d);
                    System.out.println("El mes es: "+m);
                    System.out.println("El año es: "+a);
                    System.out.println("La fecha es: "+d+"/"+m+"/"+a);
                }
            }
        }else{
            System.out.println("Fecha Incorrecta");
        }
    }
}

Una manera mas corta y fácil, pero igual valoro tu trabajo :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Solicitar al usuario una fecha (dd:mm:aaaa) y comprobar si es correcta.

Publicado por Miguel Angel (1 intervención) el 20/05/2019 22:59:30
Diría que esta forma no comprueba realmente una fecha válida, le puedes meter perfectamente 31 de febrero... con lo cual yo no valoro tu trabajo, valoro el primero que es el correcto, ya que comprueba mes a mes y años bisiestos, y no es mucho más largo. A veces hay que plantearse cuál es el objetivo, y eso es lo que hacemos los programadores (o lo intentamos :).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Solicitar al usuario una fecha (dd:mm:aaaa) y comprobar si es correcta.

Publicado por Tom (1831 intervenciones) el 21/05/2019 15:55:14
Usas datos que no deberías:
if (mes.equals("01") || mes.equals("03") || mes.equals("05") || mes.equals("07") || mes.equals("08") || mes.equals("10") || mes.equals("12")) {
(¿ Qué pasa si el usuario introduce "3" ?)

Este if plantea dudas por la (no) agrupación de las condiciones:
if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0) {

Es realmente más fácil y seguro usar https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#of-int-int-int- y capturar la excepción.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Solicitar al usuario una fecha (dd:mm:aaaa) y comprobar si es correcta.

Publicado por Yamil Bracho (2315 intervenciones) el 21/05/2019 16:00:00
Lo mejor es usar una biblioteca como jodatime (https://www.joda.org/joda-time/)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 755
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Solicitar al usuario una fecha (dd:mm:aaaa) y comprobar si es correcta.

Publicado por Yamil Bracho (2315 intervenciones) el 21/05/2019 16:40:59
Hacen el mismo chequeo como el que mencionas.
Ademas de eso agrega algunas funcionabilidades..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Solicitar al usuario una fecha (dd:mm:aaaa) y comprobar si es correcta.

Publicado por Tom (1831 intervenciones) el 21/05/2019 17:05:34
Sí, pero en versiones anteriores de java. Copio y pego de joda-time:
"Joda-Time is the de facto standard date and time library for Java prior to Java SE 8. Users are now asked to migrate to java.time (JSR-310)."
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar