Prevent Lenient Date Parsing

The java.text.DateFormat class and its java.util.SimpleDateFormat subclass are useful for formatting and parsing date and time values. For example, your application may allow a user to enter a date value and then use SimpleDateFormat to process it and return an instance of java.util.Date. When DateFormat attempts to process a string representation of a date using the parse() method, it normally throws an exception if the string does not represent a valid date. However, there are some cases where DateFormat will not throw an exception when parse() is passed an invalid date. For example:

 import java.util.*;import java.text.*;public class BadDate {	public static void main(String[] args)throws Exception {		SimpleDateFormat sdf =new SimpleDateFormat("MM/dd/yyyy");		Date d = sdf.parse("02/09/hello");		System.out.println("Converted to " + d);	}  // public static void main()}  //  public class BadDate

Since this code attempts to parse a string with an invalid year (“hello”), you might expect it to throw an exception. In fact, it does not, and generates output similar to:

 Converted to Mon Feb 09 00:00:00 CST 0001

Note that what should have been the year portion of the date string (“hello”) was incorrectly translated to a value of 0001. So although parse() was passed an invalid date, it failed to throw an exception. However, there is an explanation for this behavior and a simple remedy for it.

By default, DateFormat instances use a “lenient” mode when parsing dates, and in some cases will try to “guess” what was intended when the date string is invalid. You can disable this feature by calling the DateFormat’s setLenient() method. For example, to successfully detect the invalid date in the sample code, insert this line prior to the call to the parse() method:

 sdf.setLenient(false);

This disables lenient mode for the DateFormat instance, and will cause a ParseException to be thrown instead of incorrectly parsing the invalid date. You can use this approach to ensure that your code always detects invalid date strings.

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

The Latest

Top 5 B2B SaaS Marketing Agencies for 2023

In recent years, the software-as-a-service (SaaS) sector has experienced exponential growth as more and more companies choose cloud-based solutions. Any SaaS company hoping to stay ahead of the curve in this quickly changing industry needs to invest in effective marketing. So selecting the best marketing agency can mean the difference

technology leadership

Why the World Needs More Technology Leadership

As a fact, technology has touched every single aspect of our lives. And there are some technology giants in today’s world which have been frequently opined to have a strong influence on recent overall technological influence. Moreover, those tech giants have popular technology leaders leading the companies toward achieving greatness.

iOS app development

The Future of iOS App Development: Trends to Watch

When it launched in 2008, the Apple App Store only had 500 apps available. By the first quarter of 2022, the store had about 2.18 million iOS-exclusive apps. Average monthly app releases for the platform reached 34,000 in the first half of 2022, indicating rapid growth in iOS app development.