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

时间:2015-01-07 16:08:15

标签: java

我找到的每个解决方案都将日期/时间值“序列化”为字符串,然后再将其解析为所需的时区。这似乎是一种效率低下的方法。我正在使用java SE 8,似乎有更好的支持使用新类处理时区(尽管我不熟悉java SDK)。我和他们一起玩,以下,相当简单的解决方案似乎工作正常,但没有日期/时间的字符串表示作为中间人。

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

我过度简化了吗?

1 个答案:

答案 0 :(得分:0)

您的方法有效,但有更简洁的方法,请参阅:https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html#withZoneSameInstant-java.time.ZoneId-

这样的事情应该有效:

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