首页 > 解决方案 > 迄今为止的字符串有时完整日期存在有时我在java中只得到年份

问题描述

所以正在解析json,有时我收到的包含日期的字符串已满(dd-mm-yyyy),有时我只收到yyyy,我似乎无法转换为日期,所以如果有人可以帮忙

标签: javajsondatejavafx

解决方案


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

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-uuuuuuuu


推荐阅读