Прогнозирование формата даты с использованием образца дат в качестве входных - PullRequest
0 голосов
/ 09 января 2019

ищет метод, который принимает список дат (строкового типа) в качестве входных данных и возвращает возможные форматы даты.

например: ввод будет ["01/02/2018", "13/09/2018", "8/11/2016"] затем вывод должен быть "дд / мм / гггг".

это один из примеров. он должен иметь возможность возвращать все поддерживаемые форматы даты по java, которая лучше всего подходит для данного ввода.

1 Ответ

0 голосов
/ 09 января 2019

Я не думаю, что такой метод легко доступен. Вам нужно будет кодировать его самостоятельно.

Это возможно, хотя не всегда возможно дать уникальный ответ.

Требуется ровно три числа в строке и одинаковые разделители до, между и после чисел в каждой строке. Подберите первое, второе и третье число из каждой строки. Найти минимум и максимум каждого. Я беру твой пример:

[ "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.

Удачного кодирования.

...