Why Has No ParseException Exception in Parsing Date String?
Date/time converts to date string or vice versa. It is a common thing in our developer's life. For example,
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import java.text.ParseException;
public class ConsoleInputExample {
public static void main(String[] args) {
Scanner scanner= new Scanner(System.in);
SimpleDateFormat df = new SimpleDateFormat("mm/dd/yyyy");
try {
do {
System.out.print("ENTER DATE STRING (mm/dd/yyyy or 'q') : ");
String dateString = scanner.next();
if (dateString != null) dateString = dateString.trim();
if (dateString == null || dateString.length()== 0)
continue;
if (dateString.equalsIgnoreCase("Q"))
break;
// Parse the date
try {
Date date = df.parse(dateString);
System.out.println("Original string: " + dateString);
System.out.println("Parsed date : " + date.toString());
System.out.println();
}
catch(ParseException pe) {
System.out.println("ERROR: could not parse date in string \""
+ dateString + "\"");
}
} while (true);
}
catch(Exception e) {
;
}
}
}
Run the above code and enter wrong month, day, and year as following and you did not get ParseException:
ENTER DATE STRING (mm/dd/yyyy or 'q') : 2222/22232/23123123
Original string: 2222/22232/23123123
Parsed date : Mon Nov 14 13:02:00 EST 23123183
Actually, SimpleDateFormat class provides setLenient method for valiadtion of the parsing date/time string. The following code is fine,
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import java.text.ParseException;
public class ConsoleInputExample {
public static void main(String[] args) {
Scanner scanner= new Scanner(System.in);
SimpleDateFormat df = new SimpleDateFormat("mm/dd/yyyy");
df.setLenient(false);
try {
do {
System.out.print("ENTER DATE STRING (mm/dd/yyyy or 'q') : ");
String dateString = scanner.next();
if (dateString != null) dateString = dateString.trim();
if (dateString == null || dateString.length()== 0)
continue;
if (dateString.equalsIgnoreCase("Q"))
break;
// Parse the date
try {
Date date = df.parse(dateString);
System.out.println("Original string: " + dateString);
System.out.println("Parsed date : " + date.toString());
System.out.println();
}
catch(ParseException pe) {
System.out.println("ERROR: could not parse date in string \""
+ dateString + "\"");
}
} while (true);
}
catch(Exception e) {
;
}
}
}
Here is result,
ENTER DATE STRING (mm/dd/yyyy or 'q') : 2222/22232/23123123
ERROR: could not parse date in string "2222/22232/23123123"
ENTER DATE STRING (mm/dd/yyyy or 'q') :
Most Recent java Faqs
- How to uncompress a file in the gzip format?
- How to make a gzip file in Java?
- How to use Java String.split method to split a string by dot?
- How to validate URL in Java?
- How to schedule a job in Java?
- How to return the content in the correct encoding from a servlet?
- What is the difference between JDK and JRE?
Most Viewed java Faqs
- How to read input from console (keyboard) in Java?
- What are class variables in Java?
- What are local variables in Java?
- How to Retrieve Multiple Result Sets from a Stored Procedure in JDBC?
- How to Use Updatable ResultSet in JDBC?
- How to Use JDBC Java to Create Table?
- Why final variable in Enhanced for Loop does not act final?