我正在解析json,有时我收到的包含日期的字符串已满(dd-mm-yyyy(,有时我只收到yyyy,我似乎无法将其转换为日期,所以如果有人能帮助
根据您的业务需求,您可以使用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-uuuu
和uuuu
。