当前位置: 首页 > 知识库问答 >
问题:

解析日期-时间字符串中日期的序数指示符(st、nd、rd、th)

曹兴贤
2023-03-14

我检查了simpledateformatjavadoc,但我无法找到一种方法来解析日期格式的序数指示器,如下所示:

 Feb 13th 2015 9:00AM

我试过“MMM dd yyyy HH:MMA”,但要正确,天数必须是数字?

是否可以使用simpledateformat解析“13”日期而不必截断字符串?

共有1个答案

窦彦君
2023-03-14

Java的SimpleDateFormat不支持序数后缀,但序数后缀只是一个眼力糖--它是多余的,可以很容易地删除以允许直接解析:

Date date = new SimpleDateFormat("MMM dd yyyy hh:mma")
    .parse(str.replaceAll("(?<=\\d)(st|nd|rd|th)", ""));

replace regex非常简单,因为这些序列不会出现在有效日期的任何其他地方。

若要处理将来自任何语言的任何长度的序数指示符附加为后缀的任何语言,请执行以下操作:

Date date = new SimpleDateFormat("MMM dd yyyy hh:mma")
    .parse(str.replaceAll("(?<=\\d)(?=\\D* \\d+ )\\p{L}+", ""));
 类似资料:
  • 我有一个字符串“星期六,10月25日,11:40” 这里是我想如何转换它

  • 本实例演示了如何通过DateFormat类的parse方法根据不同的本地环境解析日期/时间字符串,并将其转换成Date对象。在最后还演示了parse方法如何解析不符合日期/时间逻辑的字符串。 例子 : 解析日期/时间字符串 实例的代码如下: package chapter8; import java.text.DateFormat; import java.util.Date; import ja

  • 有什么方法可以让Sysdate像2020年9月23日一样,上标为“rd”。我尝试了这个查询:从对偶中选择to_char(sysdate,'ddth Month, YYYY','NLS_DATE_language=American');这给我的结果是2020年9月23日,但我想要的是上标的“rd”。 提前谢谢。

  • 问题内容: 如何将类似“ 01-Jan-1995”的字符串解析为Python对象? 问题答案: 总体来说,您可以使用或模块中的函数来分析日期和时间字符串。您的示例可以解析为: 请注意,解析月份的名称是与语言环境相关的。下表显示了用于解析日期和时间的各种格式的指令。

  • 我正在尝试在中解析这些日期,然后获取表示形式。 我阅读了这个类似的答案,并创建了一个方法来解析上述日期并返回具有所需格式的: 然而,没有一个图案是匹配的。我这里缺少什么? 更新:在这两个日期中,我都收到了字符的异常。

  • 我有一个文件,可以有日期修改值与日期或日期时间的格式。我曾将该值解析为: 现在,字符串也可以是