如何使用ZonedDateTime或Java 8将任何日期时间转换为UTC

我想使用ZonedDateTime将日期06-12-2015 02:10:10 PM从默认区域转换为UTC。

 LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); ZonedDateTime utc = ZonedDateTime.of(localDateTime, ZoneOffset.UTC); 

但是utc返回2015-12-06T14:10:10Z而不是06-12-2015 09:10:10 AM

如何将日期从默认区域转换为UTC? 这里给出的答案将当前时间转换为UTC。

您可以使用ZonedDateTime.ofInstant(Instant, ZoneId) ,其中第二个参数是UTC (即时知道本地偏移)。 就像是,

 String source = "06-12-2015 02:10:10 PM"; String pattern = "MM-dd-yyyy hh:mm:ss a"; DateFormat sdf = new SimpleDateFormat(pattern); try { Date date = sdf.parse(source); ZonedDateTime zdt = ZonedDateTime.ofInstant(date.toInstant(), ZoneId.of("UTC")); System.out.println(zdt.format(DateTimeFormatter.ofPattern(pattern))); } catch (ParseException e) { e.printStackTrace(); } 

我得到(对应我的本地区域偏移)

 06-12-2015 06:10:10 PM