如何在 java 中将"2020-03-11 16:27:31"格式转换为"2020-02-24T11:04:52+00:00"格式



嗨,我不知道如何将
"2020-03-11 16:27:31"转换为"2020-03-11T16:27:31+00:00"

我不知道。

日期是给定的,格式为"2020-03-11 16:27:31"

我想要这种格式的上述日期"2020-03-11T16:27:31+00:00"

以下是您可以执行所需操作的方法(如果您使用的是java8(:

String date = "2020-03-11 16:27:31";
String pattern = "yyyy-MM-dd HH:mm:ss";
// formatter with spaces before and after 'T'
DateTimeFormatter f0 = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.append(DateTimeFormatter.ISO_LOCAL_DATE)
.appendLiteral(' ')
.appendLiteral('T')
.appendLiteral(' ')
.append(DateTimeFormatter.ISO_LOCAL_TIME)
.optionalStart().appendOffset("+HH:MM", "+00:00").optionalEnd()
.toFormatter();
// formatter without spaces before and after 'T'
DateTimeFormatter f1 = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.append(DateTimeFormatter.ISO_LOCAL_DATE_TIME)
.optionalStart().appendOffset("+HH:MM", "+00:00").optionalEnd()
.toFormatter();
OffsetDateTime offsetDateTime = LocalDateTime.parse(date, DateTimeFormatter.ofPattern(pattern))
.atOffset(ZoneOffset.ofHoursMinutes(0, 0));
String result = offsetDateTime.format(f1);

但我建议您按照@deHaar的建议阅读java.timi手册。

如果您使用的是Java 8或更高版本,请使用java.time(在此处阅读为什么以及如何使用它(将具有适当DateTimeFormatterString解析为LocalDateTime,通过添加+00:00ZoneOffset来创建其OffsetDateTime,并使用不同的DateTimeFormatter输出。

您可以通过向DateTimeFormatter添加所需的模式并调用其方法ofPattern(String pattern)来准备所需的格式。

如果你想看一个例子,请向我们展示你迄今为止所做的尝试。

最新更新