【问题标题】:Returning a date format from an unknown format of date string in java [duplicate]从java中未知格式的日期字符串返回日期格式[重复]
【发布时间】:2011-09-21 00:16:52
【问题描述】:

可能重复:
Parse any date in Java

假设我们有一个格式的日期字符串(用户不知道)。您可以从用户那里收到的可接受日期示例:

  • yyyy-MM-dd/yy-MM-dd
  • yyyy/MM/dd/yy/MM/dd
  • dd/MM/yyyy/dd/MM/yy
  • MM/dd/yyyy/MM/dd/yy`

是否有一个库可以接受字符串中的日期并返回可供SimpleDateFormat 或 Joda Time 使用的日期格式?

谢谢

【问题讨论】:

  • 看看解决方案如何适应 2010 年 9 月 8 日会很有趣......你怎么知道哪个是月份,哪个是日期,因为两者都是完全可以接受的,具体取决于用户所在的地区
  • 你看到问题Parse any date in Java 和答案了吗?不是一个简单的库,而是基于模式匹配然后查找的您自己的实用程序的代码。
  • @sdolgy,好问题。应该询问用户这是否是它解析的正确日期。我认为用户应该接受哪个结果是正确的。
  • 该问题(月或日)在我链接到的另一个问题中也得到了解决。
  • dd/MM/yyyy 是一种非常不常见的格式(我相信它甚至不是官方的)。通常- 被用作这种模式的分隔符。

标签: java date-format


【解决方案1】:

作为一个简单的解决方案:我将在提供的输入上应用每种日期格式以获取 Date 对象,然后以相同的日期格式打印 Date 对象。如果日期格式的输入和输出相同,则日期格式为候选。

【讨论】:

  • 1) 这是一个漫长的过程,而且对象初始化和比较技术是不必要的。 2) 这并不能解决 03/04/2010 是指 4 月 3 日还是 3 月 4 日的问题。
  • 您所说的与您在评论中解释的内容相矛盾。你说用户应该决定可接受的结果。
  • @salman.mirghasemi,很公平,我的意思是,如果我添加 April 3 并且他的解决方案发现 April 4,他的输出与日期对象比较检查有效,没有办法显示模棱两可的情况并通知用户。
  • 用户得到这两个:DD/MM/YYYY 和 MM/DD/YYYY,然后选择一个。如果您想让它更加用户友好,您可以通过询问以下问题以长格式显示每个案例:“您的意思是:2010 年 4 月 3 日还是 2010 年 3 月 4 日?”
  • 差不多或创建一个提出它的验证。此外,答案并没有解决根据日期字符串查找“适当”日期格式的问题。它假设我定义了一个日期格式列表(只要有一些格式取决于地区和语言环境等)。
猜你喜欢
  • 1970-01-01
  • 2011-08-27
  • 2014-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 2012-05-09
  • 2012-01-07
相关资源
最近更新 更多