Сначала вам нужно проанализировать вашу строку:
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-интерфейс даты и времени.