Java 将字符串日期解析为不同格式的最佳方法是什么?

Java 将字符串日期解析为不同格式的最佳方法是什么?,java,Java,我收到的文本文件的日期格式不同,但当我们验证这些文件时,我们需要将其转换为标准格式,如“yyyy-MM-dd'T'HH:MM:ss” 是否有一种常见的方法来识别txt文件中的日期格式,然后对其进行解析?我认为您可以使用正则表达式来查找日期格式,然后将其转换为标准格式。在 不,没有标准的方法来解析文本并找到日期的原始模式。 考虑下面的字符串 010203 它可以是以下任何有效格式(以及其他格式): 因此对于这种情况,不可能找到正确的格式。通常,您需要知道从字符串转换为日期的模式。您应该使用配置文

我收到的文本文件的日期格式不同,但当我们验证这些文件时,我们需要将其转换为标准格式,如“yyyy-MM-dd'T'HH:MM:ss”


是否有一种常见的方法来识别txt文件中的日期格式,然后对其进行解析?

我认为您可以使用正则表达式来查找日期格式,然后将其转换为标准格式。在


不,没有标准的方法来解析文本并找到日期的原始模式。 考虑下面的字符串

010203
它可以是以下任何有效格式(以及其他格式):


因此对于这种情况,不可能找到正确的格式。通常,您需要知道从字符串转换为日期的模式。

您应该使用配置文件,或者如果每个文件都有其他格式,您需要在开始时进行配置(如ResourcesBundle):

格式=yyyy-MM-dd


您应该使用SimpleDataFormat来解析它。

日期很难,正如Kayaman所写的,不可能总是解析

就我个人而言,我至少在20年前改用了ISO标准(YYYY-MM-DD),但如果您必须处理大量传入文件,那么您最好设置大量模糊测试来检测最可能的格式

DD/MM/YY vs MM/DD/YY vs YY/MM/DD是最常见的问题,这里您必须查看文件中的所有日期,看看是否可以找到排除一个或多个备选方案的示例

例如,“如果字段大于12,则不能为月;如果字段大于31,则必须为年值”

无论如何,必须以特定于应用程序的方式处理两位数的年份值:您将轴心值放置在何处以决定正确的世纪


缓冲整个输入并尝试不同的替代方案以确定最可能的输入对流式处理无效,对于某些输入,您永远无法绝对确定。

2015年1月2日是1月2日还是2月1日?您有可能的输入格式列表吗?它们是互斥的吗?检查一下,看看是否有用
ddMMyy
yyMMdd
MMddyy