Как преобразовать дату в виде строки с 17 декабря 2018 года по 2018-12-17 в Java.Я хочу сохранить его в базе данных MYSQL - PullRequest
0 голосов
/ 23 марта 2019

Я успешно импортировал столбец даты из Excel в код Java. Однако я не могу изменить формат даты с 17 декабря 2018 года на 2018-12-17. Пожалуйста, помогите.

public  void saveToDatabase(Vector dataHolder) throws ParseException {
          System.out.println(dataHolder);
          for(Iterator iterator = dataHolder.iterator();iterator.hasNext();) {
              List list = (List) iterator.next();
                fullName = list.get(0).toString();
                idNumberString = list.get(1).toString();
                                //idNumber = Integer.parseInt ( idNumberString );
                committee = list.get(2).toString();
                amountString = list.get(3).toString();
                                //amount = Integer.parseInt ( amountString );
                bosaFosa = list.get(4).toString();
                purpose = list.get(5).toString();
                paymentsType = list.get(6).toString();
                supportingDocuments = list.get(7).toString();
                entryDate = list.get(8).toString();
                }

Код теперь после извлечения данных из столбца Excel, месяц отображается в тексте как «Dec», то есть «17-Dec-2018» Я ожидаю, что окончательный вывод в строке будет «2018-12-17», чтобы я мог сохранить его в базе данных MYSQL как DATE Type.

Ответы [ 3 ]

2 голосов
/ 23 марта 2019

java.time

    DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("d-MMM-uuuu", Locale.ENGLISH);

    String fullName = "Emmanuel Macron";
    int idNumber = 42;
    String entryDateString = "17-Dec-2018";

    LocalDate entryDate = LocalDate.parse(entryDateString, dateFormatter);

    PreparedStatement insertStatement = yourDbConnection.prepareStatement(
            "insert into your_table (name, id, entry) values (?, ?, ?);");
    insertStatement.setString(1, fullName);
    insertStatement.setInt(2, idNumber);
    insertStatement.setObject(3, entryDate);
    int rowsInserted = insertStatement.executeUpdate();

Пример немного проще, чем ваш, но должен ответить на то, о чем вы спрашиваете, поэтому я доверяю вам все остальное.Я использую (и горячо рекомендую) java.time, современный Java API даты и времени, для всей работы с датами в Java.

Шаги, связанные с датой:

  1. Разобрать строку даты в LocalDate.LocalDate.parse(entryDateString, dateFormatter) делает это.В строке шаблона формата d-MMM-uuuu d означает день месяца из 1 или 2 цифр, MMM означает сокращение месяца, а uuuu означает год из 4 цифр.Аббревиатура месяца зависит от региона.Поскольку я взял Dec как английский, я указал английскую локаль для форматера;пожалуйста, исправьте, если ваши строки даты на другом языке.
  2. Передайте LocalDate вашему PreparedStatement.insertStatement.setObject(3, entryDate); делает это.

Если вы хотите проверить, что первая точка работает должным образом:

    System.out.println("Entry date was parsed into " + entryDate);

Вывод:

Дата вводабыл проанализирован в 2018-12-17

PS Вы также можете проверить, можете ли вы получить дату из Excel другим способом.Если вы используете более старую библиотеку, такую ​​как Apache POI, я боюсь, что другой вариант - это старомодный объект Date, который затем нужно будет преобразовать, поэтому возникает вопрос, стоит ли оно того.

Ссылка: Обучающее руководство по Oracle: Дата и время , объясняющее, как использовать java.time.

1 голос
/ 24 марта 2019

Ваш код просто прост. Вот код:

Анализ строки ввода.

String fromDate="17-Dec-2018";
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy", Locale.ENGLISH);
LocalDate localDate = LocalDate.parse(fromDate, dateFormatter);

Создать вывод строки.

String convertedDate = localDate.toString();
System.out.println(convertedDate);

Здесь DateTimeFormatter.ofPattern("dd-MMM-yyyy", Locale.ENGLISH) - формат и язык ввода даты.

Вот импорт:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
0 голосов
/ 23 марта 2019

РЕДАКТИРОВАТЬ: Пожалуйста, следуйте ответу @Ole VV, приведенному выше, поскольку это лучшее решение, чем мое.


Сначала вам нужно будет преобразовать данные String в Date объект.Пример кода:

    String sDate1="31/12/1998";  
    Date date1=new SimpleDateFormat("dd/MM/yyyy").parse(sDate1);  

Затем вы можете использовать класс SimpleDateFormat для форматирования даты по вашему желанию.

Для получения более подробной информации о SimpleDateFormatter классе, отметьте this из

...