In this blog post, I will be demonstrating how you can convert a String to a Date object. Consider the following code snippet:

public class StringToDate {

public static void main(String[] args) { 
    System.out.println("Enter a date:"); 
    Scanner scanner = new Scanner(System.in); 
    String dateStr = scanner.nextLine(); 
    System.out.println("Input date is "+dateStr); 
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy"); 
    try { 
        Date date = simpleDateFormat.parse(dateStr); 
        System.out.println("Date in date format is "+date); 
    } catch (ParseException e) {  
        e.printStackTrace(); 
    } 
    scanner.close();
}
}

The input Date in String format is read using the Scanner class. The code uses the SimpleDateFormat class. This is a class that provides date formatting functions. In the constructor, you need to specify the format in which the input date is specified as a String. So in this case, I have specified “dd-MM-yyyy” which means the date will be in this format. Then, the parse method is invoked. This method is defined in the DateFormat class which is a super-class of SimpleDateFormat . This returns a Date object corresponding to the input String.

So if you run this code with the input as “08-09-2018”, it will print the following output:

Enter a date:
08-09-2018
Input date is 08-09-2018
Date in date format is Sat Sep 08 00:00:00 IST 2018

Note that the input date should match the format that is specified in the SimpleDateFormat constructor. Suppose we specify as input like this “08-Sep-18”, and if you run the code now, it will print the following:

Enter a date:
08-Sep-18
Input date is 08-Sep-18
java.text.ParseException: Unparseable date: "08-Sep-18"
at java.text.DateFormat.parse(Unknown Source)
at learnjava.dates.StringToDate.main(StringToDate.java:17)

The API documentation for SimpleDateFormat specifies the pattern Strings that you need to use for various date formats.