有人可以说明这两种将ZonedDateTime调整为UTC的方式吗?如果可能,还提供一些测试事件的日期时间。
String eventDate = "2016-11-28T10:56:28+11:00"; // my example date time
ZonedDateTime zonedDateTime = ZonedDateTime.parse(eventDate.trim(),
DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX"));
// defaulting to UTC Zone
//1st way
System.out.println(zonedDateTime.withZoneSameInstant(ZoneId.of("UTC")).toInstant());
//2nd way
System.out.println(zonedDateTime.toInstant());
我的问题是,对于其他日期时间输入,这两种方式可能有所不同,而这些日期时间输入不一定具有相同的格式,时区或偏移量。
没有任何区别。两种方式都将始终获得相同的瞬间。
原因是:ZonedDateTime
始终唯一地定义一个时间点,即瞬间。使用withZoneSameInstant
转换到另一个时区后,新的ZonedDateTime
将始终定义相同时间点,同一时刻。
BTW deHaar在注释中是正确的:您的字符串包含UTC的偏移量+11:00
,并且没有像Asia/Shanghai
这样的时区,因此对于您的目的,OffsetDateTime
比ZonedDateTime
更合适。