java 将 LocalDateTime 从格式“EEE MMM dd HH:mm:ss z yyyy”转换为另一种“yyyy-MM-dd'T'HH:mm:ss”[重复]

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

我想转换这个日期“Mon Feb 20 09:45:00 UTC 2023”,下面这段代码是我的做法:

    public static LocalDateTime convertFormatDateLocalDateTime(String startTime) {
    DateTimeFormatter input = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z yyyy");
    input.withZone(ZoneOffset.UTC);
    DateTimeFormatter output = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
    output.withZone(ZoneOffset.UTC);
    LocalDateTime d2 = null;
    if(startTime!=null) {
        LocalDateTime d = LocalDateTime.parse(startTime,input);
        System.out.println(d);
        String dtStr = output.format(d);
        d2 = LocalDateTime.parse(dtStr, output);
        System.out.println(d2);
    }
    return d2;
}

但是我得到了这个错误: java.time.format.DateTimeParseException:无法在索引 0 处解析文本“Mon Feb 20 09:45:00 UTC 2023”

我想使用任何方法从“EEE MMM dd HH:mm:ss z yyyy”转换为这种“yyyy-MM-dd'T'HH:mm:ss”格式,只要它能正常工作。提前致谢。

java date utc java-time datetimeformatter
1个回答
-1
投票

终于可以这样运行了:

public static LocalDateTime convertFormatDateLocalDateTime(String startTime) {
    DateTimeFormatter input = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
    DateTimeFormatter output = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
    LocalDateTime d2 = null;
    if(startTime!=null) {
        LocalDateTime d = LocalDateTime.parse(startTime,input);
        System.out.println(d);
        String dtStr = output.format(d);
        d2 = LocalDateTime.parse(dtStr, output);
        System.out.println(d2);
    }
    return d2;
}

我用过 Locale.ENGLISH 但它也适用于 Locale.US。 非常感谢你们。

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