Я не очень понимаю, чего вы пытаетесь достичь. Разбор пользовательского ввода в Date? Сохранение даты в поле базы данных MySQL типа date (или datetiteme / timestamp) в виде объекта или в виде строки?
1. Разбор пользовательского ввода
Код, который вы предлагаете, правильно обрабатывает ввод пользователя в java.util.Date при условии, что ввод действительно в ожидаемом формате:
String dateimput="24/12/2009"; // Christmas Eve
java.text.DateFormat df = new java.text.SimpleDateFormat("dd/MM/yyyy");
java.util.Date dt = null;
try
{
dt = df.parse(dateimput);
System.out.println("date imput is:" +dt);
// = "date imput is:Thu Dec 24 00:00:00 CET 2009"
}
catch (java.text.ParseException e)
{
e.printStackTrace();
}
Обратите внимание, что когда Date ничего не знает о формате, используемом для его синтаксического анализа и вывода, когда вы делаете ('... + dt') вызов его toString (), который по умолчанию использует длинный формат даты. Однако нет никаких причин, почему это должно быть проблемой для вас. Если вы хотите записать его в определенном формате, следуйте советам Даниила.
2. Сохранение даты в БД
Если вы сохраняете дату в поле даты / даты / времени с помощью JDBC, у вас есть два варианта:
(A) Использование строкового запроса и оператора
Создайте запрос вставки в виде строки и передайте его в оператор, как показано в:
aConnection.createStatement().executeUpdate(
"insert into mytable(mydate) values(" + df.format(dt) + ")")
В этом случае вы должны убедиться, что строка даты имеет формат, понятный БД (например, yyyy-mm-dd для DB2).
(B) Использование PreparedStatement
Или, что должно быть безопаснее, потому что это предотвращает внедрение SQL, а также проще, поскольку оно делегирует преобразование типов java в правильную форму базы данных драйверу JDBC БД, используйте подготовленный оператор:
PreparedStatement pstmt = con.prepareStatement(
"insert into mytable(mydate) values(?)");
pstmt.setDate(1, new java.sql.Date(dt.getTime()))