查找未知日期字符串的模式

时间:2019-02-26 21:59:40

标签: java date-parsing

对Java来说还很陌生,但是试图弄清楚如何解决我遇到的问题。我通读了许多有关在Java中格式化未知日期/时间的文章,因为我知道您需要首先了解日期的模式,然后才能开始解析日期。有没有一种方法可以给定字符串日期,例如2/21/2019,该方法将返回该日期字符串的格式。 我发现ofPattern util,但似乎只返回格式的模式,而不是像上面的字符串。

我正在寻找类似下面的伪代码的东西。如果我能够返回给定字符串的日期模式,则可以使用SimpleDateFormat动态传递模式。

String date = '2/21/2019';
Date datePattern = date.getPattern();
// datePattern would output ""MM/dd/yyyy""
SimpleDateFormat formatter = new SimpleDateFormat(datePattern);  
String strDate = formatter.format(date);  

再次感谢

1 个答案:

答案 0 :(得分:2)

  

是否可以给定String日期(例如2/21/2019),此方法将返回此日期字符串的格式。

不。 Java无法解释字符串的含义。许多日期字符串格式可能不明确。 1/2/3是2003年1月的第二天,2003年2月的第一天还是2001年3月2日?

搜索堆栈溢出。您将找到许多有关解析各种日期时间格式的字符串的问答,包括an Answer I wrote today

  • 如果您有不可预测的输入,那么当然不可能有可靠的解决方案,只能进行猜测。
  • 如果您可以识别出一组有限的非歧义格式,请定义一组DateTimeFormatter对象。对于任何输入,请依次尝试每个格式化程序,直到一个有效为止(不会抛出DateTimeParseException)。

真正的解决方案是教育有关ISO 8601的数据发布者。

最后一件事:永远不要使用SimpleDateFormat。可怕的旧式日期时间类在几年前被现代的 java.time 类所取代。