首页 > 解决方案 > 在Java中将UTC时间戳转换为带有偏移量的时间

问题描述

我有一个 MYSQL UTC 时间戳“2021-07-23 08:13:17”。

我想将其转换为具有偏移的时间,例如“2021-07-21T08:13:17+01:00”。我的代码是:

OffsetDateTime offsetDateTime = OffsetDateTime.parse("2021-07-23 08:13:17", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
offsetDateTime.format(ISO_OFFSET_DATE_TIME).toString();

但是,第一行给出了错误:

Text '2021-07-23 08:13:17' could not be parsed: Unable to obtain OffsetDateTime from TemporalAccessor: {},ISO resolved to 2021-07-23T08:13:17 of type java.time.format.Parsed

我怎样才能做这个简单的转换?

标签: java

解决方案


您的字符串中没有偏移量,因此它不是OffsetDateTime. 它只有一个日期和一个时间组件,所以它只是一个LocalDateTime.

LocalDateTime localDateTime = OffsetDateTime.parse("2021-07-23 08:13:17", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

之后,您可以使用以下方法给它一个偏移量atOffset

OffsetDateTime offsetDateTime = localDateTime.atOffset(ZoneOffset.ofHours(1));

推荐阅读