Вопрос по simpledateformat, datetime, parsing, date, java – преобразование даты в строку и обратно в дату в Java

1

В моей программе я пытаюсь преобразовать дату в строку в указанный формат, а затем вернуться к дате. Мне нужна дата в формате дд-ммм-гг. Итак, я конвертирую дату в формат dd-MMM-yy, используя SimpleDateFormat, например,

SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yy");
String bookingDate = sdf.format(myDate);

Результат - то, что я ожидал, это 23 мая - 12, но когда я конвертирую строку обратно в дату используя parse (), он меняется на ср 23 мая 13:16:14 IST 2012.

Есть ли способ конвертировать строку обратно в дату без изменения формата? Мне строго нужно передать объект даты в указанном формате на запрос.

Ваш Ответ

5   ответов
0

java.time

java.time фреймворк в комплекте с Java 8 и выше. УвидетьРуководство, Эти новые классы вдохновленыJoda времени, определяетсяJSR 310и продленThreeTen-Extra проект. Это значительное улучшение по сравнению с неприятными путающими старыми классами, java.util.Date/.Calendar et al.

Date-only class

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

Кстати, использование двухзначных чисел в течение года создает проблемы. Я настоятельно рекомендую использовать четырехзначные годы, когда это возможно. Среда java.time предполагает, что любые двузначные годы находятся в20xx века, с 2000 по 2099 год включительно.

Для разбора строки укажите ожидаемый формат. Вы не используете ни один из стандартныхISO 8601 форматы, поэтому мы должны определить шаблон формата. Укажите локаль, которая включает язык, который мы ожидаем найти для названия месяца.

// Parse String representation.
String input = "23-May-12";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "d-MMMM-yy" , Locale.ENGLISH );  // Using four "M" characters means we expect the full name of the month.
LocalDate localDate = formatter.parse ( input , LocalDate :: from );

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

    // Generate String representation.
    String output = localDate.format ( formatter );

Дамп на консоль.

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

Когда беги.

input: 23-May-12 → localDate : 2012-05-23

localDate : 2012-05-23 → output: 23-May-12

0

DateFormat.getDateInstance(DateFormat.SHORT, <locale>).parse(myDate);.

Однако у вас будет дата в стандартном формате, например, дд / мм / гг, а не в обычном формате. Шаблон зависит от того, какойместо действия ты используешь.

Вы можете попробовать создать свой собственный шаблон, используя стандартную библиотеку Java или черезThreeTen / JSR-310

0

то не стоит беспокоиться о его формате, так как объект Date понимает с его форматом либо Java, либо любой Java-фреймворк, либо SQL.

И если вы передаете дату непосредственно в SQL-запрос (конкатенация), то вы можете передать Date String в том же формате, который вы видите в БД, он будет обрабатываться так же правильно.

4

it is changing to Wed May 23 13:16:14 IST 2012.

Это не правда, он преобразует обратно вDate правильно, когда вы пытаетесь напечатать экземпляр Date, он вызывает метод toString (), и он исправил форматированный вывод, так что если вы хотите отформатированную дату, вам нужно использоватьformat() метод

В кратком разборе метод разбираетString вDate нет собственностиDate который содержит формат, поэтому вам нужно использоватьformat() методanyhow

Что вы пытаетесь сказать в комментарии?
Вам нужно использоватьformat() метод, который является единственным вариантом, пожалуйста, проверьте мой ответ
SimpleDateFormat sdf = new SimpleDateFormat (& quot; dd-MMM-yy & quot;); Строка bookingDate = sdf.format (booking.getJourneyDate ()); здесь дата поездки относится к типу даты, когда я делаю booking.setJourneyDate ((Date) sdf.parse (bookingDate)); дата поездки установлена в среду 23 мая 00:00:00 IST 2012 ..? Srikanth Sridhar
Если я проанализирую строку на сегодняшний день, я получу ее в том же виде, что и 23 мая. Но мне нужно назначить форматированную дату в журнал. Есть ли способ получить дату в формате дд-ммм-гг? Srikanth Sridhar
0

если вы просто добавляете дату в строку запроса, зачем вам нужно преобразовать строковую дату обратно в объект даты? И если вы используете подготовленное заявление, вам не нужно беспокоиться о формате. И, как предложено выше, объект Date не содержит никакой информации о формате

Похожие вопросы