查找未知日期字符串的模式
Find pattern of unknown date string
对 Java 还很陌生,但我正在尝试弄清楚如何解决我遇到的问题。我在 Java 中阅读了许多关于格式化未知 date/time 的文章,因为我知道你需要先知道日期的模式,然后才能开始解析日期。有没有办法给出一个字符串日期,例如 2/21/2019
,此方法将 return 此日期字符串的格式。
我找到了 ofPattern util 但似乎只有 return 格式的模式而不是像上面那样的字符串。
我一直在寻找类似于下面的伪代码的东西。如果我能够 return 给定字符串的日期模式,我就可以使用 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);
再次感谢,
Is there a way to given a String date such as 2/21/2019 that this method would return the format of this date string.
没有。 Java 无法解释您的字符串的含义。许多日期字符串格式可能不明确。 1/2/3
是 2003 年 1 月 2 日,2003 年 2 月 1 日,还是 2001 年 3 月 2 日?
搜索堆栈溢出。您会发现许多关于解析各种日期时间格式字符串的问题和解答,包括 。
- 如果您有不可预测的输入,那么当然没有可靠的解决方案,只能靠猜测。
- 如果您可以识别正在使用的一组有限的无歧义格式,则定义一组
DateTimeFormatter
对象。对于任何输入,连续尝试每个格式化程序直到一个有效(不抛出 DateTimeParseException
)。
真正的解决方案是让您的数据发布者了解 ISO 8601。
最后一件事:永远不要使用 SimpleDateFormat
。可怕的遗留日期时间 类 多年前被现代的 java.time 类 所取代。
对 Java 还很陌生,但我正在尝试弄清楚如何解决我遇到的问题。我在 Java 中阅读了许多关于格式化未知 date/time 的文章,因为我知道你需要先知道日期的模式,然后才能开始解析日期。有没有办法给出一个字符串日期,例如 2/21/2019
,此方法将 return 此日期字符串的格式。
我找到了 ofPattern util 但似乎只有 return 格式的模式而不是像上面那样的字符串。
我一直在寻找类似于下面的伪代码的东西。如果我能够 return 给定字符串的日期模式,我就可以使用 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);
再次感谢,
Is there a way to given a String date such as 2/21/2019 that this method would return the format of this date string.
没有。 Java 无法解释您的字符串的含义。许多日期字符串格式可能不明确。 1/2/3
是 2003 年 1 月 2 日,2003 年 2 月 1 日,还是 2001 年 3 月 2 日?
搜索堆栈溢出。您会发现许多关于解析各种日期时间格式字符串的问题和解答,包括
- 如果您有不可预测的输入,那么当然没有可靠的解决方案,只能靠猜测。
- 如果您可以识别正在使用的一组有限的无歧义格式,则定义一组
DateTimeFormatter
对象。对于任何输入,连续尝试每个格式化程序直到一个有效(不抛出DateTimeParseException
)。
真正的解决方案是让您的数据发布者了解 ISO 8601。
最后一件事:永远不要使用 SimpleDateFormat
。可怕的遗留日期时间 类 多年前被现代的 java.time 类 所取代。