gpt4 book ai didi

java - 使用模式 :"dd/MM/yyyy"将字符串解析为日期

转载 作者:行者123 更新时间:2023-11-30 06:38:00 25 4
gpt4 key购买 nike

我想插入一个格式为 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 日期输入为:Fri May 04 00:00:00 CEST 2012(输入的值不正确)。

2-与mysql日期类型匹配。

我无法准确检测到错误。请帮忙。

最佳答案

我真的不明白你想要达到什么目的。将用户输入解析为日期?将日期作为对象或字符串存储到日期类型(或 datetiteme/timestamp)的 MySQL 数据库字段中?

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();    }

Notice that when a Date knows nothing about the format used for parsing it and outputting it as you do ('...+dt') calls its toString(), which by default uses the long date format. However there is no reason why that should be a problem for you. If you want to log it in a particular format, follow Daniel's suggestions.

2. Storing the date to the DB

If you store the date into a date /datetime/timestamp field via JDBC you have two options:

(A) Using string query and a Statement

Construct the insert query as a String and pass it to a Statement as in:

aConnection.createStatement().executeUpdate(
"insert into mytable(mydate) values(" + df.format(dt) + ")")

在这种情况下,您必须确保日期字符串采用数据库可以理解的格式(例如 DB2 的 yyyy-mm-dd)。

(B) 使用 PreparedStatement

或者,这必须更安全,因为它可以防止 SQL 注入(inject),而且也更容易,因为它将 java 类型转换为正确的数据库形式,委托(delegate)给数据库的 JDBC 驱动程序,使用准备好的语句:

PreparedStatement pstmt = con.prepareStatement(
"insert into mytable(mydate) values(?)");
pstmt.setDate(1, new java.sql.Date(dt.getTime()))

关于java - 使用模式 :"dd/MM/yyyy"将字符串解析为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2735657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com