寻找一种将日期列表(字符串类型)作为输入并返回可能的日期格式的方法。
for example: input is ["01/02/2018","13/09/2018","8/11/2016"] then output should be "dd/MM/yyyy".
这是其中一个例子。它应该能够返回最适合给定输入的 java 支持的所有日期格式。
最佳答案
我不认为这种方法是现成的。您需要自己编写代码。
这是可能的,尽管不一定总能给出唯一的答案。
要求字符串中恰好包含三个数字,并且每个字符串中的数字之前、之间和之后的分隔符相同。从每个字符串中取出第一个、第二个和第三个数字。找出每个的最小值和最大值。我以你为例:
["01/02/2018","13/9/2018","8/11/2016"]
- 第一个数字最小为 1,最大为 13
- 第二个数字最少 2 到最多 11
- 第三个数字的最小值是 2016 年,最大值是 2018 年
年份很简单,即最小值和最大值在 1900 到 2100 之间的数字。选择适合您情况的限制。月份是不超过 12 的数字。在您的示例中,第二个数字是自第一个数字最大为 13 以来的月份。如果没有一个非年份数字超过 12,则您无法决定并且需要抛出异常之类的。一旦你决定了年份和月份,你还没有使用的数字就是这个月的第几天。检查它是否在 1 到 31 之间以进行验证。
对于日和月:如果出现前导零(01
和 02
在您的示例中)和 所有出现有两位数,格式要求两位数,使用dd
或MM
。否则使用 d
或 M
(这将为数字打印足够的数字并将解析一位和两位输入)。因为在您的示例中,月份被指定为 9
(一位数字,在第二个字符串中)并且 8
被指定为日,因此请使用 d
和 M
.
最终结果:d/M/uuuu
或 d/M/yyyy
。
关于java - 使用日期样本作为输入进行日期格式预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54107928/