Nếu bạn đang sử dụng Java 7 hoặc phiên bản cũ hơn, bạn có thể tham khảo bài đăng này.
Nếu bạn đang sử dụng Java 8, bạn có thể làm:
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);
Cập nhật
Như được chỉ ra bởi @BasilBourque trong nhận xét, TemporalAccessor là giao diện cấp khung java và không được khuyến khích sử dụng trong mã ứng dụng và bạn nên sử dụng các lớp cụ thể hơn là giao diện.
Giao diện này là giao diện cấp khung không nên được sử dụng rộng rãi trong mã ứng dụng. Thay vào đó, các ứng dụng nên tạo và chuyển xung quanh các phiên bản của các loại cụ thể, chẳng hạn như LocalDate. Có nhiều lý do giải thích cho điều này, một phần là do việc triển khai giao diện này có thể nằm trong các hệ thống lịch khác với ISO. Xem ChronoLocalDate để có cuộc thảo luận đầy đủ hơn về các vấn đề.
Có một số lớp cụ thể có sẵn để sử dụng, như LocalDate, LocalDateTime, OffsetDateTime, ZonedDateTime và v.v.
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);