import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.temporal.ChronoField;
import java.util.Locale;
import java.util.stream.Stream;

public class Main {
	public static void main(String[] args) {
		// Replace JVM's ZoneId, ZoneId.systemDefault() with the applicable one e.g.
		// ZoneId.of("Europe/Berlin")
		int defaultYear = LocalDate.now(ZoneId.systemDefault()).getYear();

		DateTimeFormatter dtf = new DateTimeFormatterBuilder()
								.appendPattern("dd.MM[.[uuuu][uu]]")
								.parseDefaulting(ChronoField.YEAR, defaultYear)
								.toFormatter(Locale.ENGLISH);
		
		// Test
		Stream.of(
					"12.11",
					"12.11.21",
					"12.11.2021"
		).forEach(s -> System.out.println(LocalDate.parse(s, dtf)));		
	}
}