时间转换格式出现错误

Java教程 2025-09-28

前言

在使用2025-09转换成LocalDateTime出现错误,原因在于LocalDateTime只能适用这种格式yyyy-MM-dd HH:mm:ss,LocalDate使用yyyy-MM-dd格式,否则会抛异常

image.png

解决方法

转换成LocalDate

将字符串时间补充到yyyy-MM-dd格式,然后格式化时间

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String time = "2025-09-01";

// 解析成LocalDate
LocalDate localDate = LocalDate.parse(time, dateTimeFormatter);


LocalDateTime localDateTime = localDate.atStartOfDay();

System.out.println(localDateTime); 

image.png

使用LocalDateTime解析


public class DateParseExample {
    public static void main(String[] args) {
        String dateStr = "2025-02-01";

        final TemporalAccessor temporalAccessor = DateTimeFormatter.ISO_DATE.parse(dateStr);
        final LocalDateTime localDateTime = LocalDateTime.of(
                secureGet(temporalAccessor, ChronoField.YEAR),
                secureGet(temporalAccessor, ChronoField.MONTH_OF_YEAR),
                secureGet(temporalAccessor, ChronoField.DAY_OF_MONTH),
                secureGet(temporalAccessor, ChronoField.HOUR_OF_DAY),
                secureGet(temporalAccessor, ChronoField.MINUTE_OF_HOUR),
                secureGet(temporalAccessor, ChronoField.SECOND_OF_MINUTE),
                secureGet(temporalAccessor, ChronoField.NANO_OF_SECOND)
        );
        System.out.println(localDateTime);
    }

    private static int secureGet(TemporalAccessor temporalAccessor, ChronoField chronoField) {
        if (temporalAccessor.isSupported(chronoField)) {
            return temporalAccessor.get(chronoField);
        }
        return 0;
    }
}

或者补到这种时间格式yyyy-MM-dd HH:mm:ss,然后转换为LocalDateTime