Jeśli używasz Javy 7 lub starszej, możesz zapoznać się z tym postem.
Jeśli używasz Javy 8, możesz zrobić:
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);
Aktualizacja
Jak wskazał @BasilBourque w komentarzu, TemporalAccessor jest interfejsem na poziomie frameworka java i nie jest zalecane do używania w kodzie aplikacji i zaleca się używanie konkretnych klas zamiast interfejsów.
Ten interfejs jest interfejsem na poziomie struktury, który nie powinien być powszechnie używany w kodzie aplikacji. Zamiast tego aplikacje powinny tworzyć i przekazywać instancje konkretnych typów, takie jak LocalDate. Istnieje wiele powodów, z których część jest taka, że implementacje tego interfejsu mogą znajdować się w systemach kalendarzowych innych niż ISO. Zobacz ChronoLocalDate, aby uzyskać pełniejsze omówienie problemów.
Dostępnych jest kilka konkretnych klas, takich jak LocalDate, LocalDateTime, OffsetDateTime, ZonedDateTime itp.
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);