, , @Jon Skeet answer:
String input = "5:45 PM";
DateTimeFormatter parser = DateTimeFormatter.ofPattern("h:mm a", Locale.ENGLISH);
LocalTime time = LocalTime.parse(input, parser);
, java.util.Locale, , - AM/PM. ( , ).
, java.time.LocalDate ( ) LocalTime, LocalDateTime:
// combine with today date
LocalDateTime combined = LocalDate.now().atTime(time);
LocalDateTime :
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm");
System.out.println(combined.format(fmt));
:
16/08/2017 17:45
LocalDateTime java.util.Date, .
A java.util.Date 1970-01-01T00:00Z ( Unix Epoch). ( ). .
, Date , , : , , , ( 1970-01-01T00:00Z), .
A LocalDateTime "local": (, ) (, , ), - .
LocalDateTime . , Date, , .
- :
ZonedDateTime atDefaultTimezone = combined.atZone(ZoneId.systemDefault());
Date date = Date.from(atDefaultTimezone.toInstant());
/, . , :
ZonedDateTime zdt = combined.atZone(ZoneId.of("Europe/London"));
Date date = Date.from(zdt.toInstant());
, Europe/London. API IANA ( Region/City, America/Sao_Paulo Europe/Berlin).
(, CST PST), .
( , ), ZoneId.getAvailableZoneIds().
( LocalDateTime - ). Jon ZonedDateTime ).