各种形式的日期格式标准化

冰a冰 2021-03-30 03:08:40
在近期的文本解析过程中需要提取文本内的日期并规范格式,常用格式为“yyyy-MM-dd”。
由于写法各异,无法用Date函数或SimpleDateFormat函数格式化,所以自己实现了一个方法。
经过测试后凡是带有分隔符的日期都能准确提取,现在不知道是否完善,代码如下:
// 个位数的月份正则
static Pattern month = Pattern.compile("(?<=-)\\d(?=-)");
// 个位数的日/号正则
static Pattern day = Pattern.compile("(?<=-)\\d$");
public static String formatDate(String sourceDate) {
sourceDate = sourceDate.replaceAll("[年月../—]","-")
.replaceAll("[号日]$", "")
.replaceAll("[〇零OOo0]","0")
.replace("一","1")
.replace("二","2")
.replace("三","3")
.replace("四","4")
.replace("五","5")
.replace("六","6")
.replace("七","7")
.replace("八","8")
.replace("九","9")
.replace("廿","2");
// 十月的十转换为 10
sourceDate = sourceDate.replaceAll("(?<=-)十(?=-)","10");
// 十几的十转换为 1
sourceDate = sourceDate.replaceAll("(?<=-)十(?=\\d)","1");
// 整十的十转换为 0
sourceDate = sourceDate.replaceAll("(?<=\\d)十$","0");
// 几十几的十删掉
sourceDate = sourceDate.replaceAll("(?<=\\d)十(?=\\d)","");
// 个位数月份前面加 0
Matcher matcher = month.matcher(sourceDate);
if (matcher.find()) {
sourceDate = sourceDate.substring(0,matcher.start()) + "0" + sourceDate.substring(matcher.start());
}
// 个位数日期前面加 0
matcher = day.matcher(sourceDate);
if (matcher.find()) {
sourceDate = sourceDate.substring(0,matcher.start()) + "0" + sourceDate.substring(matcher.start());
}
return sourceDate;
}
...全文
605 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰a冰 2021-04-08
  • 打赏
  • 举报
回复
引用 1 楼 qq_42330678 的回复:
你可以百度一下Hutool这个工具类,参考下他里面的,这是是国人写的
好的,感谢!
兴兴兴兴吖 2021-04-07
  • 打赏
  • 举报
回复
你可以百度一下Hutool这个工具类,参考下他里面的,这是是国人写的
课程内容:本课程是《Java工程师必学系列课程》的第6部分,主要讲解Java语言中中新旧两代日期时间相关的类、日期时间相关的处理方法、历法和时间计算的常识,在课程的最后还安排了万年历实战项目本课程涉及的主要内容可以分为四部分:一、Java语言旧日期时间系统二、Java8新日期时间系统三、日期、时间、历法基础知识四、万年历项目课程说明:在开发Java程序的过程中,无论做什么类型的项目,基本上都会处理与日期和时间相关的问题。既然日期时间问题的处理已经成了程序必须要掌握的技能,那我们就必须认真深入的学习日期时间的计算和处理方法。本课程将深入讲解Java语言新旧两代日期时间系统的相关知识。在讲解的过程中,不仅仅讲解如何调用各种类所提供的方法去处理相关问题,更是从原理上深入分析了这些类的设计原理,以及要如何避免在实战中踩到那些非常隐蔽的大坑。此外,除了讲解日期时间相关工具类的使用,本课程还向广大学员普及了一些必要的日期、时间和历法的相关知识。让学员能够从根本上理解日期时间算法的设计思路。同时,本课程在最后一部分,安排了非常精彩的、完整的万年历项目,通过实战的形式切实帮助学员提高解决具体问题的能力!预期效果:认真学习完本课程,学员可以掌握日期时间计算和处理的相关知识,并能提高实际的编码水平。配套福利:万年历软件的完整源码环境配置要求:学习本课程需安装JDK13或更高版本的JDK,以便程序能正确运行,建议使用IntelliJ IDEA 2019.1.2或更高版本的开发工具。因有合作协议约束,《穆哥学堂》只提供PDF版本的课件!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧