fork download
  1. import java.time.LocalDate;
  2. import java.time.format.DateTimeFormatter;
  3. import java.time.format.DateTimeParseException;
  4. import java.time.format.ResolverStyle;
  5. import java.util.Locale;
  6.  
  7. public class Main {
  8. public static void main(String[] args) {
  9. demonstrateResolverStyles("56-13-2013");
  10. demonstrateResolverStyles("29-02-2013");
  11. demonstrateResolverStyles("32-02-2013");
  12. demonstrateResolverStyles("28-13-2013");
  13. }
  14.  
  15. static void demonstrateResolverStyles(String input) {
  16. System.out.println("Input string: " + input);
  17. try {
  18. System.out.println("Parsed using ResolverStyle.LENIENT => " + LocalDate.parse(input,
  19. DateTimeFormatter.ofPattern("d-M-u", Locale.ENGLISH).withResolverStyle(ResolverStyle.LENIENT)));
  20. } catch (DateTimeParseException e) {
  21. System.out.println(e.getMessage());
  22. }
  23.  
  24. try {
  25. // Default is ResolverStyle.SMART
  26. System.out.println("Parsed using ResolverStyle.SMART => "
  27. + LocalDate.parse(input, DateTimeFormatter.ofPattern("d-M-u", Locale.ENGLISH)));
  28. } catch (DateTimeParseException e) {
  29. System.out.println(e.getMessage());
  30. }
  31.  
  32. try {
  33. System.out.println("Parsed using ResolverStyle.STRICT => " + LocalDate.parse(input,
  34. DateTimeFormatter.ofPattern("d-M-u", Locale.ENGLISH).withResolverStyle(ResolverStyle.STRICT)));
  35. } catch (DateTimeParseException e) {
  36. System.out.println(e.getMessage());
  37. }
  38. System.out.println();
  39. }
  40. }
Success #stdin #stdout 0.11s 51296KB
stdin
Standard input is empty
stdout
Input string: 56-13-2013
Parsed using ResolverStyle.LENIENT => 2014-02-25
Text '56-13-2013' could not be parsed: Invalid value for MonthOfYear (valid values 1 - 12): 13
Text '56-13-2013' could not be parsed: Invalid value for MonthOfYear (valid values 1 - 12): 13

Input string: 29-02-2013
Parsed using ResolverStyle.LENIENT => 2013-03-01
Parsed using ResolverStyle.SMART => 2013-02-28
Text '29-02-2013' could not be parsed: Invalid date 'February 29' as '2013' is not a leap year

Input string: 32-02-2013
Parsed using ResolverStyle.LENIENT => 2013-03-04
Text '32-02-2013' could not be parsed: Invalid value for DayOfMonth (valid values 1 - 28/31): 32
Text '32-02-2013' could not be parsed: Invalid value for DayOfMonth (valid values 1 - 28/31): 32

Input string: 28-13-2013
Parsed using ResolverStyle.LENIENT => 2014-01-28
Text '28-13-2013' could not be parsed: Invalid value for MonthOfYear (valid values 1 - 12): 13
Text '28-13-2013' could not be parsed: Invalid value for MonthOfYear (valid values 1 - 12): 13