import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.util.stream.Stream;

public class Main {
    public static void main(String[] args) {
        DateTimeFormatter dtf = new DateTimeFormatterBuilder()
                .parseCaseInsensitive() // For case-insensitive (e.g. am, Am, AM) parsing
                .appendPattern("d MMM uuuu h:m a")
                .toFormatter();

        // Test
        Stream.of(
                "24 Oct 2016 7:31 pm",
                "24 Oct 2016 7:31 PM"
        ).forEach(s -> System.out.println(LocalDateTime.parse(s, dtf)));
    }
}