【问题标题】:what is the best way to parse string date in to different format? [duplicate]将字符串日期解析为不同格式的最佳方法是什么? [复制]
【发布时间】:2015-06-14 19:27:39
【问题描述】:

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

有没有一种通用的方法来识别txt文件中日期的格式,然后解析它?

【问题讨论】:

标签: java


【解决方案1】:

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

中进行了讨论

Parse any date in Java

【讨论】:

    【解决方案2】:

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

    010203
    

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

    ddMMyy
    yyMMdd
    MMddyy
    

    所以对于这种情况是不可能找到正确的格式的。一般来说,您需要知道从字符串转换为日期的模式。

    【讨论】:

      【解决方案3】:

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

      格式=yyyy-MM-dd

      你应该使用 SimpleDateFormat 来解析它。

      【讨论】:

        【解决方案4】:

        日期很困难,正如 Kayaman 所写,并非总是可以解析!

        我个人至少在 20 年前切换到 ISO 标准 (YYYY-MM-DD),但是如果您必须处理大量传入的文件,您可以做的最好的可能是设置大量模糊测试来检测最多可能的格式。

        DD/MM/YY vs MM/DD/YY vs YY/MM/DD 只是最常见的问题,在这里你必须查看文件中的所有日期,看看你是否能找到排除其中一个的样本或更多替代方案。

        即“如果一个字段大于 12 则不能是月,如果大于 31 则必须是年值”。

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-08-28
          • 2012-07-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-30
          • 1970-01-01
          相关资源
          最近更新 更多