java - 在 Java 中解析格式为 "January 10th, 2010"的日期? (带序号指示符,st|nd|rd|th)

标签 java date

我需要用 Java 解析格式为“2010 年 1 月 10 日”的日期。我该怎么做?

如何处理 ordinal indicatorsstndrdth 尾随天数?

最佳答案

这个有效:

String s = "January 10th, 2010";
DateFormat dateFormat = new SimpleDateFormat("MMM dd yyyy");
System.out.println("" + dateFormat.parse(s.replaceAll("(?:st|nd|rd|th),", "")));

但是你需要确保你使用的是正确的Locale正确解析月份名称。

我知道您可以在 SimpleDateFormat 中包含一般文本图案。然而,在这种情况下,文本取决于信息,实际上与解析过程无关。

这实际上是我能想到的最简单的解决方案。但我很乐意被证明是错误的。

您可以通过执行与此类似的操作来避免其中一条评论中暴露的陷阱:

String s = "January 10th, 2010";
DateFormat dateFormat = new SimpleDateFormat("MMM dd yyyy");
System.out.println("" + dateFormat.parse(s.replaceAll("(?<= \\d+)(?:st|nd|rd|th),(?= \\d+$)", "")));

例如,这将允许您不匹配 Jath,uary 10 2010

关于java - 在 Java 中解析格式为 "January 10th, 2010"的日期? (带序号指示符,st|nd|rd|th),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4722289/

相关文章:

java - 如何将普通 Java for 循环转换为 Java 8 流?

java - 在 Java 7+ 的 EDT 之外使用 Swing repaint() 方法是否仍然安全?

java - 可选的什么相当于Optional.empty()?或者,更好的写法

php - 使用子字符串 PHP 在页面上显示 SQL 表中的 "Date"数据类型

java - 将 Java swing JList 元素保存到 MySQL 或从 MySQL 恢复

java - 这个结构线程安全吗?

mysql - 将 mysql 日期四舍五入为 2 天

AngularJS 更改日期格式(六月,星期三)从 Wed Jun 08 2016 05 :30:00 GMT+0530 (India Standard Time)

json - 请求正文日期解析问题

objective-c - 两个NSDate之间的日期比较