java - 如何在 Java 中格式化非纯日期?

标签 java regex java-7

<分区>

我有两个日期需要格式化,但我收到以下异常。我的主要问题是白天部分的 th rd etc。我找不到这个问题的任何答案。我检查了所有这些链接 1 , 2 , 3 , 4 , 5我想我应该使用正则表达式,但不确定如何使用。

 10th Dec 2019 -> 2019-12-10 
 10th December 2019 -> 2019-12-10

代码

 String date1 = "10th Dec 2019";
 Date date = new SimpleDateFormat("dd MMMM YYYY").parse(date1);
 System.err.println(date);
 String date2 = new SimpleDateFormat("yyyy-mm-dd").format(date);
 System.err.println(date2);

异常

 Exception in thread "main" java.text.ParseException: Unparseable date: "10th Dec 2019"

最佳答案

用一个空字符串替换所有预期的不需要的后缀,然后解析:

    String s = "10th Dec 2019";

    SimpleDateFormat fmt = new SimpleDateFormat("dd MMM yyyy", Locale.ENGLISH);
    Date d = fmt.parse(s.replaceFirst("th|nd|st|rd", ""));
    System.out.println("d = " + d);

关于java - 如何在 Java 中格式化非纯日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32329066/

相关文章:

java - 使用 RSA 公钥加密 AES key

jquery - 单个字符的选择器占位符

regex - 可以将特定数字添加到一堆 "time"字符串中,在正则表达式中完成

java - 创建通用类列表

java - Credentials.acquireTGTFromCache(null, null) 使用 jre 7 返回 null

java - WatchService Api 文件监视在创建事件中尝试访问文件时抛出异常

java - 在 Android 上使用 Gson 和 Kinvey 反序列化自定义类

java - 在 JNLP 中加载 bcprov-jdk15on-1.50.jar 时出现问题

java - Spring用单线程池并发处理多个队列

java - 正则表达式从字符串数据中获取特定值