Un'alternativa alla risposta attuale è quello di impostare il formattatore con il fuso orario appropriato:
String input = "2015-01-05 17:00";
ZoneId zone = ZoneId.of("Australia/Sydney");
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").withZone(zone);
ZonedDateTime utc = ZonedDateTime.parse(input, fmt).withZoneSameInstant(UTC);
Dal momento che si desidera interagire con un database, potrebbe essere necessario a java.sql.Timestamp
, nel qual caso non è necessario convertire in modo esplicito in un'ora UTC, ma è possibile utilizzare invece un Instant:
ZonedDateTime zdt = ZonedDateTime.parse(input, fmt);
Timestamp sqlTs = Timestamp.from(zdt.toInstant());
Cosa intendi per "Ora UTC"? Vuoi un istantaneo? o un java.sql.Date? O un certo numero di millisimali dall'epoca? – assylias