加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在日期 – 时间字符串中解析日期的顺序指示符(st,nd,rd,

发布时间:2020-12-14 16:33:17 所属栏目:Java 来源:网络整理
导读:我检查了 SimpleDateFormat javadoc,但是我无法找到一种以这样的日期格式解析 ordinal indicator的方法: Feb 13th 2015 9:00AM 我试过“MMM dd yyyy hh:mma”,但是这些日子必须在数量上是正确的吗? 可以使用SimpleDateFormat解析“第13”日期,而不必截断
我检查了 SimpleDateFormat javadoc,但是我无法找到一种以这样的日期格式解析 ordinal indicator的方法:
Feb 13th 2015 9:00AM

我试过“MMM dd yyyy hh:mma”,但是这些日子必须在数量上是正确的吗?

可以使用SimpleDateFormat解析“第13”日期,而不必截断字符串?

解决方法

Java的SimpleDateFormat不支持序数后缀,但序号后缀只是眼睛糖果 – 它是多余的,可以很容易的删除,以便直接解析:
Date date = new SimpleDateFormat("MMM dd yyyy hh:mma")
    .parse(str.replaceAll("(?<=d)(st|nd|rd|th)",""));

替换正则表达式非常简单,因为这些序列将不会出现在有效日期的其他位置.

处理任何以任何语言附加任意长度的序号指示符作为后缀的语言:

Date date = new SimpleDateFormat("MMM dd yyyy hh:mma")
    .parse(str.replaceAll("(?<=d)(?=D* d+ )p{L}+",""));

一些语言,例如普通话,预先填写他们的顺序指标,但也可以使用交替方式处理 – 作为读者的练习留下来:)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读