怎么把 OffsetDateTime 格式 2022-11-08T03:00+09:00 转换成同类型的 2022-11-08T12:00Z
我印象这种问题可以放在GPT里面回答一下,看他的答案是什么,如果回答不出来的话,可以在其他的平台下试一下
设置下时区就可以了,这里我是一当前时区为例。
public static void main(String[] args) {
OffsetDateTime now = OffsetDateTime.now();
ZonedDateTime zonedDateTime = now.atZoneSameInstant(ZoneOffset.UTC);
System.out.println(now);
System.out.println(zonedDateTime);
}
运行结果
2023-05-30T14:27:37.427+08:00
2023-05-30T06:27:37.427Z
可以使用以下步骤将一个OffsetDateTime格式的时间从2022年11月8日上午03:00(东京时区)转换为同类型的2022年11月8日中午12:00(UTC时间):
OffsetDateTime tokyoTime = OffsetDateTime.of(2022, 11, 8, 3, 0, 0, 0, ZoneOffset.ofHours(9));
这里使用了OffsetDateTime的静态工厂方法of,传入年、月、日、小时、分钟、秒、纳秒和时区偏移量参数,创建一个代表此时间的OffsetDateTime对象。
OffsetDateTime utcTime = tokyoTime.withOffsetSameInstant(ZoneOffset.UTC);
将原始的OffsetDateTime对象调用withOffsetSameInstant方法,设置为UTC时区的时间,得到另一个OffsetDateTime对象。
Date date = Date.from(utcTime.toInstant());
使用OffsetDateTime的toInstant方法转换为一个Instant对象,再使用Date的from静态方法从Instant对象创建一个Date对象,即可完成OffsetDateTime到Date的转换。
完整的代码如下:
OffsetDateTime tokyoTime = OffsetDateTime.of(2022, 11, 8, 3, 0, 0, 0, ZoneOffset.ofHours(9));
OffsetDateTime utcTime = tokyoTime.withOffsetSameInstant(ZoneOffset.UTC);
Date date = Date.from(utcTime.toInstant());
如果需要将UTC时间转换为东京时区的时间,则只需要将第2步中的UTC偏移量改为东京时区的偏移量,即可得到相应的OffsetDateTime对象。