首页 > 解决方案 > 如何在 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"

标签: javadatetime

解决方案


在这里您可以做您需要的事情(如果您使用的是 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 手册。


推荐阅读