Om du använder Java 7 eller tidigare kan du hänvisa till det här inlägget.
Om du använder Java 8 kan du göra:
DateTimeFormatter timeFormatter = DateTimeFormatter.ISO_DATE_TIME;
TemporalAccessor accessor = timeFormatter.parse("2015-10-27T16:22:27.605-07:00");
Date date = Date.from(Instant.from(accessor));
System.out.println(date);
Uppdatera
Som påpekats av @BasilBourque i kommentaren är TemporalAccessor ett gränssnitt på java-ramverksnivå och är inte tillrådligt att använda i applikationskoden och det är tillrådligt att använda konkreta klasser snarare än gränssnitten.
Detta gränssnitt är ett gränssnitt på ramnivå som inte bör användas i stor utsträckning i applikationskod. Istället bör applikationer skapa och skicka runt instanser av konkreta typer, till exempel LocalDate. Det finns många anledningar till detta, varav en del är att implementeringar av detta gränssnitt kan vara i andra kalendersystem än ISO. Se ChronoLocalDate för en mer utförlig diskussion om problemen.
Det finns några konkreta klasser tillgängliga att använda, som LocalDate, LocalDateTime, OffsetDateTime, ZonedDateTime och etc.
DateTimeFormatter timeFormatter = DateTimeFormatter.ISO_DATE_TIME;
OffsetDateTime offsetDateTime = OffsetDateTime.parse("2015-10-27T16:22:27.605-07:00", timeFormatter);
Date date = Date.from(Instant.from(offsetDateTime));
System.out.println(date);