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

我检查了
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}+",""));

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

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。