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

时间:2020-03-19 10:45:02

标签: java datetime

嗨,我不懂如何转换
"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"

2 个答案:

答案 0 :(得分:1)

以下是您可以执行所需操作的方式(如果您使用的是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手册。

答案 1 :(得分:0)

如果您使用的是Java 8或更高版本,请使用java.time(了解使用原因和方法here)来用合适的String来解析DateTimeFormatterLocalDateTime,通过添加OffsetDateTime的{​​{1}}来创建其中的ZoneOffset,并用不同的+00:00输出。

您可以通过向DateTimeFormatter调用其方法DateTimeFormatter的模式中添加所需的模式来准备所需的格式。

如果您想查看示例,请向我们展示您到目前为止所尝试的操作。