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

问题描述 投票:1回答:1

相当新的Java,但试图弄清楚如何解决我遇到的问题。我阅读了许多关于在Java中格式化未知日期/时间的文章,因为我知道您需要首先了解日期的模式,然后才能开始解析日期。有没有办法给出一个字符串日期,如2/21/2019,这个方法将返回此日期字符串的格式。我找到了pattern 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);  

再次感谢,

java date-parsing
1个回答
2
投票

有没有办法给出一个字符串日期,如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类取代了可怕的遗留日期时间类。

© www.soinside.com 2019 - 2024. All rights reserved.