Java - Comprobar que es una fecha válida

 
Vista:
sin imagen de perfil
Val: 4
Ha aumentado su posición en 7 puestos en Java (en relación al último mes)
Gráfica de Java

Comprobar que es una fecha válida

Publicado por Ayuda con ejercicios (14 intervenciones) el 04/01/2021 18:11:13
Leer tres números que denoten una fecha (día, mes, año).
Comprobar que es una fecha válida.
Si no es válida escribir un mensaje de error.
Si es válida escribir la fecha cambiando el número del mes por su nombre.
El año debe ser mayor que 0.
Ejemplos:
Si se introduce introduce 1 2 2006, se deberá imprimir imprimir “1 de febrero febrero de 2006”.
Si se introduce 31 2 2006, se deberá imprimir “Error: fecha incorrecta”


Si alguien me puede hacer en java se lo agradeceria, y si alguien me quiere dejar su correo para poder consulatr con el otros ejericicos se lo agradeceria. Gracias
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
sin imagen de perfil

Comprobar que es una fecha válida

Publicado por anonymous (47 intervenciones) el 04/01/2021 19:48:27
Existen varias formas de obtener lo que deseas, pues Java maneja varias librerías como Calendar, DateTime y GregorianCalendar entre otras.

Puedes mezclar y apoyarte en unas y otras, ya que hay múltiples formas de hacerlo.

Así te debería funcionar:

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
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Month;
import java.time.ZoneId;
import java.time.format.TextStyle;
import java.util.Date;
import java.util.Locale;
import java.util.Scanner;
 
public class Fechas {
 
    public static void main(String[] args) throws ParseException {
 
    int eldia=0;
    int elmes=0;
    int elanio=0;
    String entradaTeclado = "";
    Scanner entradaEscaner = new Scanner (System.in);
 
    System.out.println ("Por favor ingresar Dia: ");
    entradaEscaner = new Scanner (System.in);
    eldia = entradaEscaner.nextInt();
    System.out.println ("Por favor ingresar Mes: ");
    elmes = entradaEscaner.nextInt();
    System.out.println ("Por favor ingresar Ano: ");
    elanio = entradaEscaner.nextInt();
    String sDate1 = eldia+"/"+elmes+"/"+elanio;
    Date date1=new SimpleDateFormat("dd/MM/yyyy").parse(sDate1);
 
    LocalDate localDate = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
 
    int dia = LocalDate.now().getDayOfMonth();
    Month mes = LocalDate.now().getMonth();
    int ano = LocalDate.now().getYear();
 
    String nombremes = mes.getDisplayName(TextStyle.FULL, new Locale("es", "ES"));
    System.out.println(dia + " de " + nombremes + " de " + ano);
    }
}


Resultado Prueba:

run:
Por favor ingresar Dia:
4
Por favor ingresar Mes:
1
Por favor ingresar Ano:
2021

4 de enero de 2021
BUILD SUCCESSFUL (total time: 6 seconds)
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

Comprobar que es una fecha válida

Publicado por anonymous (47 intervenciones) el 04/01/2021 20:09:01
Corrección el código queda así:

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
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Month;
import java.time.ZoneId;
import java.time.format.TextStyle;
import java.util.Date;
import java.util.Locale;
import java.util.Scanner;
 
public class Fechas {
 
    public static void main(String[] args) throws ParseException {
 
    int eldia=0;
    int elmes=0;
    int elanio=0;
    Scanner entradaEscaner = new Scanner (System.in);
    System.out.println ("Por favor ingresar Dia: ");
    entradaEscaner = new Scanner (System.in);
    eldia = entradaEscaner.nextInt();
    System.out.println ("Por favor ingresar Mes: ");
    elmes = entradaEscaner.nextInt();
    System.out.println ("Por favor ingresar Ano: ");
    elanio = entradaEscaner.nextInt();
    String sDate1 = eldia+"/"+elmes+"/"+elanio;
    Date date1=new SimpleDateFormat("dd/MM/yyyy").parse(sDate1);
    LocalDate localDate = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
    Month mes = localDate.getMonth();
    String nombremes = mes.getDisplayName(TextStyle.FULL, new Locale("es", "ES"));
    System.out.println(eldia + " de " + nombremes + " de " + elanio);
    }
}

Cualquier duda escríbeme
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