string to date有时存在完整的日期有时我在java中只能得到年份

rxztt3cl  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(277)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

27天前关门了。
改进这个问题
所以我在解析json,有时我收到的包含日期的字符串已经满了(dd-mm-yyyy),有时我只收到yyyy,但我似乎无法将其转换为日期,所以如果有人能帮忙的话

zyfwsgd6

zyfwsgd61#

根据您的业务需求,您可以使用 DateTimeFormatterBuilder#parseDefaulting e、 g.在以下代码中,我已将月份和月份的日期默认为今天的日期:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.temporal.ChronoField;
import java.util.Locale;

class Main {
    public static void main(String[] args) {
        // Test
        System.out.println(parseToDate("10-10-2020"));
        System.out.println(parseToDate("2020"));
    }

    static LocalDate parseToDate(String str) {
        LocalDate today = LocalDate.now();
        DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                                        .appendPattern("[dd-MM-uuuu][uuuu]")
                                        .parseDefaulting(ChronoField.MONTH_OF_YEAR, today.getMonthValue())
                                        .parseDefaulting(ChronoField.DAY_OF_MONTH, today.getDayOfMonth())                                       
                                        .toFormatter(Locale.ENGLISH);
        return LocalDate.parse(str, formatter);
    }
}

输出:

2020-10-10
2020-12-12

注:图案, [dd-MM-uuuu][uuuu] 有两种可选模式, dd-MM-uuuu 以及 uuuu .

相关问题