使用DateTimeFormatterBuilder将字符串解析为LocalDateTime时如何防止自动生成的'T'字母

问题描述 投票:0回答:1

我有这段代码可以将String双向解析为LocalDateTime:

public class ConvertLocalDateToString {

private static final DateTimeFormatter CUSTOM_LOCAL_DATE;
static {
    CUSTOM_LOCAL_DATE = new DateTimeFormatterBuilder()
            .appendValue(YEAR, 4, 10, SignStyle.EXCEEDS_PAD)
            .appendLiteral('-')
            .appendValue(MONTH_OF_YEAR, 2)
            .appendLiteral('-')
            .appendValue(DAY_OF_MONTH, 2)
            .appendLiteral(' ')
            .appendValue(HOUR_OF_DAY, 2)
            .appendLiteral(':')
            .appendValue(MINUTE_OF_HOUR, 2)
            .optionalStart()
            .appendLiteral(':')
            .appendValue(SECOND_OF_MINUTE, 2)
            .toFormatter();
}

public static void main(String[] args) {

    String str = "2020-02-18 15:04:30";
    LocalDateTime dateTime = LocalDateTime.parse(str, CUSTOM_LOCAL_DATE); //2020-02-18T15:04:30

    LocalDateTime addedDateTime = LocalDateTime.parse(dateTime.plusHours(10).format(CUSTOM_LOCAL_DATE.withZone(ZoneOffset.UTC)));
    System.out.println(addedDateTime);
    System.out.println(dateTime); //2020-02-18T15:04:30

}

我的假设是'T'字母由ISO-8601格式自动生成。这导致:

DateTimeParseException:无法在索引10处解析文本'2020-02-18 15:04:30'>>

我如何摆脱它?

我有这段代码,可以将String双向解析为LocalDateTime:公共类ConvertLocalDateToString {私有静态最终DateTimeFormatter CUSTOM_LOCAL_DATE;静态{...

java datetime java-8 datetime-format
1个回答
0
投票

[System.out.println(dateTime)System.out.println(String.valueOf(dateTime))相同。

© www.soinside.com 2019 - 2024. All rights reserved.