Найти шаблон неизвестной строки даты - PullRequest
0 голосов
/ 27 февраля 2019

Довольно плохо знаком с Java, но пытаюсь понять, как решить проблему, с которой столкнулся.Я прочитал много статей о форматировании неизвестной даты / времени в Java, так как знаю, что вам нужно сначала узнать шаблон даты, прежде чем вы сможете начать анализ даты.Есть ли способ дать строковую дату, такую ​​как 2/21/2019, чтобы этот метод возвращал формат этой строковой даты.Я нашел утилиту ofPattern, но, похоже, возвращает только шаблон формата, а не строку, как указано выше.

Я искал что-то вроде псевдокода ниже.Если я смогу вернуть шаблон даты по заданной строке, я мог бы тогда использовать SimpleDateFormat, передавая мой шаблон динамически.

String date = '2/21/2019';
Date datePattern = date.getPattern();
// datePattern would output ""MM/dd/yyyy""
SimpleDateFormat formatter = new SimpleDateFormat(datePattern);  
String strDate = formatter.format(date);  

Еще раз спасибо,

1 Ответ

0 голосов
/ 27 февраля 2019

Есть ли способ дать строковую дату, такую ​​как 21.02.2009, чтобы этот метод возвращал формат этой строковой даты.

Нет.Java не может интерпретировать значение ваших строк.Многие форматы строки даты могут быть неоднозначными.Является ли 1/2/3 вторым января 2003 года, первым февраля 2003 года или 2 марта 2001 года?

Переполнение стека поиска.Вы найдете много Вопросов и Ответов о разборе строк различных форматов даты и времени, включая Ответ, который я написал сегодня .

  • Если у вас есть непредсказуемые входные данные, то, конечно, надежное решение невозможно, только догадки.
  • Если вы можете определить ограниченный набор используемых неоднозначных форматов, тогда определите набор DateTimeFormatter объектов.Для любого ввода, попробуйте каждый форматтер последовательно, пока один не работает (не выдает DateTimeParseException).

Реальным решением является информирование издателя ваших данных о ISO 8601 .

И последнее: никогда не используйте SimpleDateFormat.Ужасные устаревшие классы даты и времени были вытеснены годами назад современными java.time классами.

...