首页 > 解决方案 > 将日期和时间更改为 UTC 格式

问题描述

我输入了日期和时间“2021-05-03T15:46:09.354+08:00”

我想要 UTC 格式输出 - “2021-05-03T07:46:09.354Z”

任何想法和建议

标签: java

解决方案


输入字符串适合一个OffsetDateTime,输出字符串适合一个Instant,所以:

Instant instant = OffsetDateTime.parse("2021-05-03T15:46:09.354+08:00").toInstant();
System.out.println(instant); // prints: 2021-05-03T07:46:09.354Z

您也可以使用ZonedDateTime,结果也可以是OffsetDateTimeZonedDateTime

ZonedDateTime inZoned = ZonedDateTime.parse("2021-05-03T15:46:09.354+08:00");
ZonedDateTime outZoned = inZoned.withZoneSameInstant(ZoneOffset.UTC);
System.out.println(inZoned + " -> " + outZoned);
// prints: 2021-05-03T15:46:09.354+08:00 -> 2021-05-03T07:46:09.354Z

OffsetDateTime inOffset = inZoned.toOffsetDateTime();
OffsetDateTime outOffset = inOffset.withOffsetSameInstant(ZoneOffset.UTC);
System.out.println(inOffset + " -> " + outOffset);
// prints: 2021-05-03T15:46:09.354+08:00 -> 2021-05-03T07:46:09.354Z

推荐阅读