Как преобразовать строку даты в объект даты или календаря?



у меня есть String представление даты, которую мне нужно создать Date или Calendar объект from. Я просмотрел Date и Calendar API, но не нашли ничего, что может сделать это, кроме создания моего собственного уродливого метода анализа. Я знаю, что должен быть способ, кто-нибудь знает решение?

579   5  

5 ответов:

вкратце:

DateFormat formatter = new SimpleDateFormat("MM/dd/yy");
try {
  Date date = formatter.parse("01/29/02");
} catch (ParseException e) {
  e.printStackTrace();
}

посмотреть SimpleDateFormat документация дополнительные.

и превратить его в Calendar, do:

Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

tl; dr

LocalDate.parse( "2015-01-02" )

java.время

Java 8 и позже появился новый java.время рамки, которые делают эти другие ответы устаревшими. Эта структура вдохновлена Joda Времени, определено JSR 310 и продлен ThreeTen-Extra. Смотрите учебник.

старые связанные классы, java.утиль.Дата./Календарь, как известно, хлопотно и запутанно. Избегать их.

LocalDate

как Джода-время, java.время имеет класс LocalDate для представления значения только для даты без времени суток и без часового пояса.

ISO 8601

если ваша входная строка находится в стандартном ISO 8601 на yyyy-MM-dd, вы можете попросить этот класс напрямую разобрать строку без необходимости указывать форматер.

форматы ISO 8601 используются по умолчанию в java.время для парсинга и генерации строковых представлений значений даты-времени.

LocalDate localDate = LocalDate.parse( "2015-01-02" );

форматер

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

форматирование шаблон

читать DateTimeFormatter класс doc для получения подробной информации о кодах, используемых в шаблоне формата. Они немного отличаются от старых устаревших java.text.SimpleDateFormat шаблоны класса.

обратите внимание, как второй аргумент parse метод ссылка на метод, синтаксис добавлен в Java 8 и более поздние версии.

String input = "January 2, 2015";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "MMMM d, yyyy" , Locale.US );
LocalDate localDate = LocalDate.parse ( input , formatter );

дамп в консоли.

System.out.println ( "localDate: " + localDate );

localDate: 2015-01-02

локализации автоматически

или вместо того, чтобы указать шаблон форматирования, пусть java.время локализовать для вас. Звоните DateTimeFormatter.ofLocalizedDate, и обязательно укажите желаемое / ожидаемое Locale вместо того, чтобы полагаться на текущее значение по умолчанию JVM, которое может измениться в любой момент во время выполнения(!).

String input = "January 2, 2015";
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate ( FormatStyle.LONG );
formatter = formatter.withLocale ( Locale.US );
LocalDate localDate = LocalDate.parse ( input , formatter );

дамп в консоли.

System.out.println ( "input: " + input + " | localDate: " + localDate );

вход: 2 января, 2015 | localDate: 2015-01-02

The высоко ценится библиотека времени Джоды также стоит посмотреть. Это основа для нового дата и время api это карандашом для Java 7. Дизайн аккуратный, интуитивно понятный,хорошо документированы и избегает много неуклюжести оригинала java.util.Date/java.util.Calendar классы.

Джода это!--15-->DateFormatter может разобрать строку на Joda DateTime.

попробуйте это:

DateFormat.parse(String)

The DateFormat класс parse метод.

см.http://java.sun.com/j2se/1.4.2/docs/api/java/text/DateFormat.html для получения дополнительной информации.

Comments

    Ничего не найдено.