How to get a Date String?

5

My question is how to get a string and manipulate it. The user will enter dd / mm / yyyy in the form of String . How do I do this capture? And then I need to turn that date into an integer so I can do the validations, such as if the reported day does not exceed 31.

For example, the user will report the following String : "3/21/2014", and I need to get this string and pass it as a parameter to a method.

My code is as follows:

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    TAD01 verificacoes = new TAD01();

    String data;
    boolean resultado;

    System.out.print("Informe a data: ");
    data = input.nextLine();

    resultado = verificacoes.converteData(data);
    System.out.println(data);
}

Thank you all at once.

    
asked by anonymous 24.02.2015 / 19:20

2 answers

5

To parse a date, you must use the SimpleDateFormat class. , and to get the individual fields you should use the Calendar class:

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date data = df.parse("20/02/2015");

Calendar cal = Calendar.getInstance();
cal.setTime(data);

cal.get(Calendar.YEAR);  //retorna o ano
cal.get(Calendar.MONTH); //retorna o mês 
cal.get(Calendar.DAY_OF_MONTH);  //retorna o dia 1-31
    
24.02.2015 / 19:35
1

If your goal is to simply validate you can use the SimpleDateFormat to try to analyze the date.

SimpleDateFormat fmt = new SimpleDateFormat("dd/MM/yyyy");
// !! Importante !! lenient = false fará com que o parser gere uma exceção caso a data seja inválida. 
// O funcionamento padrão é tentar interpretar a data de algum modo e retornar um objeto date válido. 
// Geralmente isso faz com que a data interpretada seja algo totalmente diferente da data correta.
fmt.setLenient(false); 

String strDate = "31/02/2015"; // uma data inválida

try {
    // caso a data seja inválida, o método parse gerará uma exceção.
    Date date = fmt.parse(strDate);

    // se chegou aqui a data é válida!
    System.out.println(date);
} catch (ParseException e) {

    //Data não é válida!
    System.out.println("Data inválida!");
}

See working in ideone

    
24.02.2015 / 19:51