import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.temporal.ChronoField;
import java.util.Locale;

public class Main {
	public static void main(String[] args) {
		DateTimeFormatter dateFormatter = new DateTimeFormatterBuilder()
				.parseCaseInsensitive()
				.appendPattern("[MM/dd/uuuu hh:mm:ss a][MM/dd/uuuu HH[:mm[:ss]]][uuuuMMdd[ hh:mm:ss a]")
				.parseDefaulting(ChronoField.CLOCK_HOUR_OF_AMPM, 0)
				.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
				.toFormatter(Locale.ENGLISH);

		// Test
		String[] arr = { "08/25/2021 10:20:30 am", "08/25/2021 10:20:30", "08/25/2021 10:20", "20210825" };

		for (String s : arr) {
			LocalDateTime ldt = LocalDateTime.parse(s, dateFormatter);
			System.out.println(ldt);
		}
	}
}
