Codectionary / Developer documentation / Java

Strict Date Parsing

DateTimeFormatter defines reusable, immutable date formats. Strict resolution rejects impossible calendar dates instead of normalizing them. Save as Main.java and run with a Java 17+ JDK: java Main.java.

Syntax

DateTimeFormatter.ofPattern("dd/MM/uuuu").withResolverStyle(ResolverStyle.STRICT)

Examples

Strict Date Parsing

Save as Main.java and run with a Java 17+ JDK: java Main.java.

import java.time.LocalDate;
import java.time.format.*;

public class Main {
  public static void main(String[] args) throws Exception {
    DateTimeFormatter format = DateTimeFormatter.ofPattern("dd/MM/uuuu")
        .withResolverStyle(ResolverStyle.STRICT);
    System.out.println(LocalDate.parse("29/02/2024", format));
    try {
      LocalDate.parse("29/02/2023", format);
    } catch (DateTimeParseException ex) {
      System.out.println("invalid date");
    }
  }
}
  1. Expected output: 2024-02-29 invalid date
  2. uuuu represents the proleptic year needed here without a separate era. Strict parsing rejects February 29 in a non-leap year.

Best practices

  • Specify Locale for textual month/day names.
  • Use ISO formatters for machine interchange when possible.

Runtime & versions

Java Virtual Machine. Feature availability depends on the language and runtime version used by your project; consult the official reference below.

Java Language Specification

Specifications & further reading