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 avoid an java.util.ConcurrentModificationException with ArrayList?
- How to convert a given array to a list in Java?
- How to make Java objects eligible for garbage collection?
- What are local variables in Java?
- What are instance variables in Java?
- How many backslashes?
- What are class variables in Java?
Most Viewed java Faqs
- How to use HttpURLConnection POST data to web server?(24745)
- What is runtime polymorphism in Java?(18324)
- How to add BASIC Authentication into HttpURLConnection?(16082)
- What is String literal pool?(14754)
- Can the run() method be called directly to start a thread?(13989)
- What does Class.forname method do?(10593)
- Can transient variables be declared as 'final' or 'static'?(10445)