Java Date.parse или новая замена Date (String)? - PullRequest
0 голосов
/ 07 мая 2011

Итак, я возвращаюсь к Java после нескольких лет программирования на .NET и пытаюсь обновить свои знания Java, но у меня возникли некоторые проблемы с устаревшей функцией Date.parse (), которую я когда-то знал. Я пытаюсь разобрать строку без даты до даты. Я НЕ хочу использовать SimpleDateFormtter, где мне нужно указать каждый приемлемый формат. Я просто хочу сделать то, что Date.parse (String anyStringFormat), чтобы получить эпоху или новый Date (String anyStringFormat), чтобы получить новую дату - что эти ребята делали раньше. В каждом документе, к которому я постоянно обращаюсь, говорится, что я должен использовать SimpleDateFormat с указанным форматом даты. Я не хочу использовать определенный формат даты - какой новый способ сделать это без определенного формата даты? Должно быть, я что-то упустил, так как не могу представить, чтобы они убрали такую ​​функцию.

Ответы [ 3 ]

3 голосов
/ 07 мая 2011

В каждом документе, к которому я постоянно обращаюсь, говорится, что я должен использовать SimpleDateFormat с указанным форматом даты. Я не хочу использовать определенный формат даты - какой новый способ сделать это без определенного формата даты? Должно быть, я что-то упустил, так как не могу представить, чтобы они убрали такую ​​функцию.

Вы делаете это неправильно тогда. new Date(String) устарело по точным причинам, указанным в комментариях, потому что строки даты могут быть неоднозначными и, следовательно, возвращаемое значение синтаксического анализа может не соответствовать ожидаемым вами (или вашим пользователем). Вот почему существует DateFormat.parse(String).

Если вы не хотите использовать SimpleDateFormat, потому что вам не нужно указывать точный формат строки даты для использования, вы можете реализовать свой собственный подкласс DateFormat и метод parse(String) - но Я ожидаю, что у вас будет много проблем с реализацией логики для работы с неоднозначными строками дат.

edit: Если вы отправляете строку в свою базу данных, где она все равно будет отформатирована, то зачем вообще разбирать строку в java.util.Date в вашем приложении? Просто отправьте необработанную строку в базу данных, и вам никогда не придется иметь дело с проблемами разбора даты, и при этом вы не тратите циклы ЦП на ненужный разбор.

1 голос
/ 07 мая 2011

Вам необходимо использовать SimpleDateFormat (или DateTimeFormat из joda-time).

Слишком много опций для форматов даты, и вы не можете рассчитывать на метод, чтобы попробовать все из них.Если вы хотите поддерживать более одного формата, составьте список поддерживаемых шаблонов.

0 голосов
/ 24 февраля 2016

Я тоже надеялся на хорошую замену Date.parse (String), но похоже, что ни один не существует (или, по крайней мере, не встроен).

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

Так что, на мой взгляд, у вас есть три варианта:

  1. создайте SimpleDateFormat для каждого интересующего вас формата, а затем попытайтесь разобрать его в каждом из них
  2. Создайте собственную реализацию DateFormat, которая сможет обрабатывать все интересующие вас форматы
  3. Используйте Date.parse (String) (или новую Date (String)) и просто подавьте предупреждения об устаревании.

Лично для моего приложения я решил указать несколько строк формата, и если их нетиз них были сопоставлены, я использовал устаревший метод Date (String).Мне не нравится использовать устаревшие методы, но я чувствовал, что как последняя попытка разобрать дату, которая уже провалилась в нескольких других попытках, это не повредит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...