java - 使用 Java 8 将日期字符串从“ddMMM”转换为“yyyy-MM-dd”
问题描述
我们需要将日期字符串“ddMMM”转换为“yyyy-MM-dd”。
例如:“30SEP”-->“2019-09-30”和“15JAN”-->“2020-01-15”(如果日期是当年的过去,则取明年的日期)
解决方案
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" ) );
推荐阅读
- java - android socket连接使用socket.io 0.9.0版本
- hive - 如何以“。”分隔的字符串形式比较版本号?
- angular - 即使应用程序运行良好,NgRx Redux devtools 也没有显示存储和状态详细信息
- php - 如何仅返回在 Twig 模板、Rainlab.Translate 模块中具有翻译的文章
- javascript - 在 node.js 上使用 jqplot?
- java - OSGI 缓存目录
- c# - 实体框架 - 同时使用 FK 插入父模型和子模型
- c# - ASPX 页面有重复的行,即使它们在 SQL 中没有重复
- c++ - 将函数作为参数传递以避免重复代码
- oracle - APEX 5.1,在列链接中设置项目值不喜欢特殊字符...比如逗号或#