#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"
(обратите внимание на заглавные буквы ММ). В противном случае ваш месяц указан неправильно в строке формата.