将本地日期/时间转换为UTC日期/时间java SE 8

将本地日期/时间转换为UTC日期/时间java SE 8,java,Java,我为此找到的每个解决方案都将日期/时间值“序列化”为字符串,然后再次将其解析为所需的时区。这似乎是一种低效的方法。我使用的是JavaSE8,似乎有更好的支持来处理带有新类的时区(尽管我不太熟悉JavaSDK)。我对它们进行了研究,下面这个相当简单的解决方案似乎工作得很好,但是没有日期/时间的字符串表示 ZonedDateTime localDateTime = ZonedDateTime.now(); System.out.println(localDateTime); ZonedDateTim

我为此找到的每个解决方案都将日期/时间值“序列化”为字符串,然后再次将其解析为所需的时区。这似乎是一种低效的方法。我使用的是JavaSE8,似乎有更好的支持来处理带有新类的时区(尽管我不太熟悉JavaSDK)。我对它们进行了研究,下面这个相当简单的解决方案似乎工作得很好,但是没有日期/时间的字符串表示

ZonedDateTime localDateTime = ZonedDateTime.now();
System.out.println(localDateTime);
ZonedDateTime utcDateTime = ZonedDateTime.ofInstant(
  localDateTime.toInstant(), 
  ZoneOffset.UTC
);
System.out.println(utcDateTime);
结果:

2015-01-07T11:02:43.368-05:00[America/New_York]
2015-01-07T16:02:43.368Z

我是否过于简单化了?

您的方法可行,但有一种更简洁的方法,请参见:

像这样的方法应该会奏效:

localDateTime.withZoneSameInstant(ZoneId.of("UTC"));

我觉得很好。你能举例说明你找到的那些“序列化”解决方案吗?你提到的解决方案很可能是jdk8之前的解决方案。jdk8获得了一个全新的日期/时间api(所有
java.time
都是新的)