java - How can I make Joda DateTime parser to only accept strings of form yyyyMMdd? -


i use joda-time parse dates in format yyyymmdd (so date should have 8 digits). defined date formatter follows

datetimeformatter formatter = datetimeformat.forpattern("yyyymmdd").withzoneutc();  // valid eight-digit date string datevalid = "20130814"; datetime datejoda = formatter.parsedatetime(datevalid); system.out.println(datejoda.tostring());  // invalid 7 digit date string dateinvalid = "2013081"; datejoda = formatter.parsedatetime(dateinvalid); system.out.println(datejoda.tostring()); 

i expected see exception when parsing second invalid date. output of code

2013-08-14t00:00:00.000z 2013-08-01t00:00:00.000z 

why joda parser accept invalid date 7 digits? how have change formatter not accept dates don't have 8 digits?

the option know of create own datetimeformatter using datetimeformatterbuilder , use fixed decimals each field.

in case be:

datetimeformatter formatter = new datetimeformatterbuilder()     .appendfixeddecimal(datetimefieldtype.year(),4)     .appendfixeddecimal(datetimefieldtype.monthofyear(),2)     .appendfixeddecimal(datetimefieldtype.dayofmonth(),2)     .toformatter()     .withzoneutc(); 

Comments

Popular posts from this blog

Unable to remove the www from url on https using .htaccess -