Implemented strict date/datetime parsing.
authorMarco Zanon <info@marcozanon.com>
Tue, 28 Apr 2020 20:03:24 +0000 (20:03 +0000)
committerMarco Zanon <info@marcozanon.com>
Tue, 28 Apr 2020 20:03:24 +0000 (20:03 +0000)
7.x/src/java/com/marcozanon/macaco/conversion/MLocalDateConverter.java
7.x/src/java/com/marcozanon/macaco/conversion/MLocalDateTimeConverter.java

index 2fd57255f226b5978ddafc62b8d74a26a763c94c..ea3f761ed1ac8d2ebdc84b79eebac2e16ac063de 100644 (file)
@@ -11,6 +11,7 @@ import com.marcozanon.macaco.text.MText;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeParseException;
+import java.time.format.ResolverStyle;
 import java.util.LinkedHashSet;
 import java.util.Locale;
 
@@ -98,7 +99,7 @@ public class MLocalDateConverter extends MObject {
         }
         //
         try {
-            DateTimeFormatter.ofPattern(dateFormat);
+            DateTimeFormatter.ofPattern(dateFormat).withResolverStyle(ResolverStyle.STRICT);
         }
         catch (IllegalArgumentException exception) {
             throw new IllegalArgumentException(String.format("Invalid 'dateFormat': %s.", dateFormat)); // no need to propagate exception
@@ -116,7 +117,7 @@ public class MLocalDateConverter extends MObject {
         //
         LocalDate d = null;
         try {
-            d = LocalDate.parse(x, DateTimeFormatter.ofPattern(inputDateFormat, inputLocale));
+            d = LocalDate.parse(x, DateTimeFormatter.ofPattern(inputDateFormat, inputLocale).withResolverStyle(ResolverStyle.STRICT));
         }
         catch (DateTimeParseException exception) {
             throw new MInvalidConversionFormatException(String.format("Invalid 'x' or parsing: %s (input format: %s).", x, inputDateFormat)); // no need to propagate exception
@@ -134,7 +135,7 @@ public class MLocalDateConverter extends MObject {
             throw new IllegalArgumentException("Invalid 'outputLocale': null.");
         }
         //
-        return date.format(DateTimeFormatter.ofPattern(outputDateFormat, outputLocale));
+        return date.format(DateTimeFormatter.ofPattern(outputDateFormat, outputLocale).withResolverStyle(ResolverStyle.STRICT));
     }
 
     public LocalDate getDateFromString(String x) throws MInvalidConversionFormatException {
index 9b95708ac6910d2e55f214dce72ba3ae338f6dbb..b7026d5efa7467b5625e35c64ec625443edfa83b 100644 (file)
@@ -11,6 +11,7 @@ import com.marcozanon.macaco.text.MText;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeParseException;
+import java.time.format.ResolverStyle;
 import java.util.LinkedHashSet;
 import java.util.Locale;
 
@@ -98,7 +99,7 @@ public class MLocalDateTimeConverter extends MObject {
         }
         //
         try {
-            DateTimeFormatter.ofPattern(datetimeFormat);
+            DateTimeFormatter.ofPattern(datetimeFormat).withResolverStyle(ResolverStyle.STRICT);
         }
         catch (IllegalArgumentException exception) {
             throw new IllegalArgumentException(String.format("Invalid 'datetimeFormat': %s.", datetimeFormat)); // no need to propagate exception
@@ -116,7 +117,7 @@ public class MLocalDateTimeConverter extends MObject {
         //
         LocalDateTime dt = null;
         try {
-            dt = LocalDateTime.parse(x, DateTimeFormatter.ofPattern(inputDatetimeFormat, inputLocale));
+            dt = LocalDateTime.parse(x, DateTimeFormatter.ofPattern(inputDatetimeFormat, inputLocale).withResolverStyle(ResolverStyle.STRICT));
         }
         catch (DateTimeParseException exception) {
             throw new MInvalidConversionFormatException(String.format("Invalid 'x' or parsing: %s (input format: %s).", x, inputDatetimeFormat)); // no need to propagate exception
@@ -134,7 +135,7 @@ public class MLocalDateTimeConverter extends MObject {
             throw new IllegalArgumentException("Invalid 'outputLocale': null.");
         }
         //
-        return datetime.format(DateTimeFormatter.ofPattern(outputDatetimeFormat, outputLocale));
+        return datetime.format(DateTimeFormatter.ofPattern(outputDatetimeFormat, outputLocale).withResolverStyle(ResolverStyle.STRICT));
     }
 
     public LocalDateTime getDatetimeFromString(String x) throws MInvalidConversionFormatException {