как преобразовать дату из «вторник мая 08 2018 13:15:00» в «2018-05-08 13: 15: 00.000» в Java - PullRequest
0 голосов
/ 28 мая 2018

как конвертировать дату из "Tue May 08 2018 13:15:00" в "2018-05-08 13:15:00.000" в Java, так как я должен использовать ее для предложения where в пользовательском запросе sql ex- TO_timestamp('2018-05-08 13:15:00.000', 'YYYY-MM-DD HH24:MI:SS.FF')

Ответы [ 3 ]

0 голосов
/ 30 мая 2018

Сначала вам нужно проанализировать вашу строку:

    DateTimeFormatter formatter 
            = DateTimeFormatter.ofPattern("EEE MMM dd uuuu H:mm:ss", Locale.ENGLISH);
    String dateTimeString = "Tue May 08 2018 13:15:00";
    LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, formatter);
    System.out.println(dateTime);

Это печатает

2018-05-08T13: 15

Как былосказал в комментариях, не переносите строку в вашу базу данных.Предполагая, что вы используете, по крайней мере, Java 8 и, по крайней мере, JDBC 4.2, просто передайте проанализированный LocalDateTime объект в базу данных через ваш PreparedStatement, например:

    PreparedStatement queryStatement = yourDbConnection.prepareStatement(
            "select * from your_table where your_column = ?");
    queryStatement.setObject(1, dateTime);

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

Для тех, кто читает и нуждается в такой строке, как 2018-05-08 13:15:00.000, для каких-либо других целей, кроме запроса к базе данных, способ получить этот формат можно получить еще через одинформатер:

    DateTimeFormatter targetFormatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss.SSS");
    String formattedDateTimeString = dateTime.format(targetFormatter);
    System.out.println(formattedDateTimeString);

Печать

2018-05-08 13: 15: 00.000

Ссылка: Учебные руководства по Java ™: Trail: Date Time , объясняющие, как использовать java.time, современный Java-интерфейс даты и времени.

0 голосов
/ 30 мая 2018
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Test {

    public static void main(String[] args) {

        String dateStr = "Tue May 08 2018 13:15:00";
        DateTimeFormatter formatterFrom = DateTimeFormatter.ofPattern("EEE MMM dd yyyy HH:mm:ss");
        LocalDateTime localDate = LocalDateTime.parse(dateStr, formatterFrom);

        DateTimeFormatter formatterTo = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
        String localDate1 = formatterTo.format(localDate);

        System.out.println(localDate1); // 2018-05-08 13:15:00.000

    }

}
0 голосов
/ 30 мая 2018

Мне кажется, у меня есть предложение попытаться решить вашу проблему ...

Примечание. Возможно, вам придется настроить языковой стандарт SimpleDateFormat из-за перевода дат в строке.В противном случае будет выдано исключение java.text.ParseException .

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Test {

    public static void main(String[] args) {

        try {
            String dateStr = "Tue May 08 2018 13:15:00";

            SimpleDateFormat sdfBefore = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss", Locale.ENGLISH);
            SimpleDateFormat sdfAfter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

            Date date = sdfBefore.parse(dateStr);

            System.out.println(sdfAfter.format(date));

        } catch (ParseException e) {
            e.printStackTrace();
        }

    }

}

Надеюсь, я помог.

...