首页 > 解决方案 > 使用 Java 8 将日期字符串从“ddMMM”转换为“yyyy-MM-dd”

问题描述

我们需要将日期字符串“ddMMM”转换为“yyyy-MM-dd”。

例如:“30SEP”-->“2019-09-30”和“15JAN”-->“2020-01-15”(如果日期是当年的过去,则取明年的日期)

标签: javasimpledateformatdatetime-formatdate-conversionlocaltime

解决方案


DateTimeFormatter 是解析日期和时间的好工具,但它需要一年作为输入。这需要当前年份,但如果输出的日期早于现在,则添加一年。

    String dateString = "29FEB";
    DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder().parseCaseInsensitive().appendPattern("ddMMMyyyy").toFormatter();
    LocalDate dateOfInterest = LocalDate.parse( dateString + LocalDate.now().getYear(), dateTimeFormatter );
    if( dateOfInterest.isBefore( LocalDate.now() ) )
        dateOfInterest = LocalDate.parse( dateString + LocalDate.now().plusYears(1).getYear(), dateTimeFormatter );

然后可以将 LocalDate 转换为您要查找的格式的字符串,如下所示。

dateOfInterest.format( DateTimeFormatter.ofPattern( "yyy-MM-dd" ) );

推荐阅读