/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAccessor;
import java.util.Locale;

/* Name of the class has to be "Main" only if the class is public. */
public class Main {
    public static void main(String[] args) {
        parseDate("09:10:05.584 AM EST Wed Nov 29 2023", TIME_FORMAT);
        parseDate("09:10:05.584 AM Wed Nov 29 2023", TIME_FORMAT);
        parseDate("09:10:05.584 EST Wed Nov 29 2023", TIME_FORMAT);
        parseDate("09:10:05.584 Wed Nov 29 2023", TIME_FORMAT);
    }
    public static final String TIME_FORMAT = "HH:mm:ss.SSS[ a][ z][zzz] E MMM dd yyyy";

    public static String parseDate(String input, String format) {
        String retVal = "";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format, Locale.ENGLISH);
        TemporalAccessor ta = formatter.parseBest(input, LocalDateTime::from, LocalDate::from);
        retVal = ta.toString();
        System.out.println("Parsed date is: " + retVal);
        return retVal;
    }
}