How to get a Date String?

Asked

Viewed 114 times

5

My question is how to get a string and manipulate it. The user will inform dd/mm/yyyy in the form of String. How do I make this catch? And then I need to make this date whole so that I can do the validations, for example if the informed day does not exceed 31.

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

My code is this:

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 in advance to all.

2 answers

5


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

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
  • 3

    And if the last date is invalid you will have a java.text.Parseexception to deal with.

1

If your goal is simply to validate you can use the class 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 it working on ideone

Browser other questions tagged

You are not signed in. Login or sign up in order to post.