使用日期样本作为输入进行日期格式预测

Date format prediction by using sample of dates as input

正在寻找一种将日期列表(字符串类型)作为输入和 return 可能的日期格式的方法。

for example: input is ["01/02/2018","13/09/2018","8/11/2016"] then output should be "dd/MM/yyyy".

这是其中一个例子。它应该能够 return 所有支持的日期格式 java 最适合给定的输入。

我认为这种方法不是现成的。您需要自己编写代码。

这是可能的,尽管不一定总能给出唯一的答案。

要求字符串中正好包含三个数字,并且每个字符串中的数字之前、之间和之后的分隔符相同。从每个字符串中取出第一个、第二个和第三个数字。找出每个的最小值和最大值。我以你为例:

["01/02/2018","13/9/2018","8/11/2016"]

  • 第一个数字最小为 1,最大为 13
  • 第二个数字最少 2 个,最多 11 个
  • 第三个数字的最小值是 2016 年,最大值是 2018 年

年份很简单,就是最小值和最大值在 1900 到 2100 之间的数字。选择适合您情况的限制。月份是不超过 12 的数字。在您的示例中,第二个数字是第一个数字最大为 13 后的月份。如果 none 的非年份数字超过 12,则您无法决定并且需要抛出异常等。一旦你决定了年份和月份,你还没有使用的数字就是这个月的第几天。检查它是否在 1 到 31 之间以进行验证。

对于日和月:如果出现前导零(0102 在您的示例中) 所有事件都有两位数,格式要求两位数,使用ddMM。否则使用 dM(这将为数字打印足够的数字并将解析一位和两位输入)。因为在您的示例中,月份以 9(一位数字,在第二个字符串中)和 8 作为日期,所以使用 dM

最终结果:d/M/uuuud/M/yyyy