Проблема с преобразованием из java.util.Дата в java.sql.Timestamp

#java #sql #types

#java #sql #типы

Вопрос:

Я пытаюсь поместить предоставленную пользователем дату в базу данных SQL, и у меня есть следующие строки для обработки строки и преобразования ее в объект java.sql.Timestamp.

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd'T'hh:mm");
java.util.Date badDate = formatter.parse(request.getParameter("datetime")); 
Timestamp date = new Timestamp(badDate.getTime());
  

Проблема в том, что badDate — это правильная дата, которую вводит пользователь, но date всегда присваивается неправильный месяц и день, обычно 2 января, и правильное время и год. У меня была та же проблема, когда я пытался преобразовать в объект java.sql.Date, но тогда время также было установлено на полночь. Я не смог найти никого с подобной проблемой после некоторого поиска, может быть, кто-то здесь видел что-то подобное?

Комментарии:

1. В итоге получилось 2 января, какую дату вы ожидали? Какое значение было возвращено request.getParameter(«datetime»)? Вы основываете это на значениях, которые фактически сохраняются в базе данных, или вы получаете в результате неверную дату, просто распечатав java.sql.Timestamp перед тем, как перейти к базе данных?

Ответ №1:

Формат даты неправильный, так и должно быть yyyy-MM-dd'T'HH:mm .

Пожалуйста, обратитесь к этому документу для получения подробной информации о формате даты.

m обозначает минуты
M в течение нескольких месяцев
h в течение нескольких часов утра / вечера (1-12)
H для часов в 24-часовых часах

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

Ответ №2:

Вы хотите "yyyy-MM-dd'T'hh:mm" (обратите внимание на заглавные буквы ММ). В противном случае ваш месяц указан неправильно в строке формата.