import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.util.Date;
import java.util.Locale;

class Main {
    public static void main(String[] args) {
        String strDateTime = "1992-03-11 12:00:12.123";

        DateTimeFormatter parser = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss.SSS", Locale.ENGLISH);

        // An alternative parser
        DateTimeFormatter ldtParser = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_LOCAL_DATE)
                .appendLiteral(' ').append(DateTimeFormatter.ISO_LOCAL_TIME).toFormatter(Locale.ENGLISH);

        LocalDateTime ldt = LocalDateTime.parse(strDateTime, parser);
        System.out.println(ldt);

        // Parsing using the alternative parser
        ldt = LocalDateTime.parse(strDateTime, ldtParser);
        System.out.println(ldt);

        // Converting LocalDateTime to a ZonedDateTime
        // Replace ZoneId.systemDefault() with applicable ZoneId e.g.
        // ZoneId.of("America/New_York")
        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zdt = ldt.atZone(zoneId);
        System.out.println(zdt);
        // Alternatively,
        zdt = ZonedDateTime.of(ldt, zoneId);
        System.out.println(zdt);

        // Obtaining an Instant
        Instant instant = zdt.toInstant();
        System.out.println(instant);

        // In case you need an instance of java.util.Date
        Date date = Date.from(instant);
    }
}