我想插入具有此格式MM / dd / YYYY的日期,例如:04/29/2010至29/04/2010,以便在字段类型日期中插入到mysql数据库中。 所以我有这个代码:
String dateimput=request.getParameter("datepicker");
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date dt = null;
try
{
dt = df.parse(dateimput);
System.out.println("date imput is:" +dt);
}
catch (ParseException e)
{
e.printStackTrace();
}
但它给了我那些错误:
1-date imput是:Fri May 04 00:00:00 CEST 2012(它不是输入的正确值)。
2-dismatching with mysql date type。
我无法准确检测到错误。 请帮忙。
答案 0 :(得分:4)
我真的不明白你想要实现的目标。将用户输入解析为日期?将Date作为对象或字符串存储到date(或datetiteme / timestamp)类型的MySQL DB字段中?
您建议的代码正确地将用户输入解析为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(),默认情况下使用长日期格式。但是,没有理由认为这对您来说应该是一个问题。如果您想以特定格式记录,请遵循Daniel的建议。
如果您通过JDBC将日期存储到日期/日期时间/时间戳字段中,则有两个选项:
将插入查询构造为String并将其传递给Statement,如下所示:
aConnection.createStatement().executeUpdate(
"insert into mytable(mydate) values(" + df.format(dt) + ")")
在这种情况下,您必须确保日期字符串采用DB可以理解的格式(例如DB2的yyyy-mm-dd)。
或者,哪个必须更安全,因为它会阻止SQL注入,并且因为它将java类型转换为正确的数据库形式委托给DB的JDBC驱动程序而更容易,所以使用预准备语句:
PreparedStatement pstmt = con.prepareStatement(
"insert into mytable(mydate) values(?)");
pstmt.setDate(1, new java.sql.Date(dt.getTime()))
答案 1 :(得分:1)
答案 2 :(得分:0)
你有:
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
试
DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
答案 3 :(得分:0)
尝试DateFormat df = new SimpleDateFormat(“MM / dd / yyyy”);它给了我这个:日期输入是:周四4月29日00:00:00 CEST 2010 我想要29/04/2010 00:00:00
输出Date时,您还需要使用DateFormat,否则它只会打印toString()返回的内容。您可以尝试System.out.println(df.format(dt));