如何从 HTML 表单中获取 "Date" 字段并将其转换为 MySQL 日期
How fetch "Date" field from HTML form and convert it into MySQL Date
作为标题,我需要获取从 HTML 页面发送到 Servlet 的日期输入。在此 servlet 中,我需要将此数据格式转换为 MySQL 格式。
事实上,我认为我已经做对了所有事情,但是,如果我引入 1970 年 1 月 1 日之前的日期,我就会遇到问题。
这是我从 HTML 页面解析日期时的代码:
Date authorDateOfBirth1= null;
try {
authorDateOfBirth1= new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("authorDateOfBirth1"));
}
catch (ParseException exceptionInParsingDate) {
out.print("Error in parsing date author1 " + exceptionInParsingDate.getMessage());
}
然后,每次我需要 object Mysql 我使用的日期:
statementAuthor.setDate(3, new java.sql.Date(authorDateOfBirth.getTime()));
非常感谢!
您在数据库中的列应为 DATE
.
类型
小心你的import
陈述。您可能混淆了 Java 类型、java.sql.Date
和 java.util.Date
。一个代表一个时刻,另一个代表一个日期,但实际上是一个时刻。 两者都不使用 class。
您在 Java 中使用了可怕的日期时间 classes,几年前被现代 java.time class随着 JSR 310 的采用。
您的 Author
class 的出生日期成员字段应为 LocalDate
类型。
对于没有时间和时区的仅日期值,使用 LocalDate
。
LocalDate ld = LocalDate.parse( "1960-01-23" ) ;
使用 JDBC 4.2 及更高版本与数据库交换 java.time 对象。
myPreparedStatement.setObject( … , ld ) ;
从数据库中检索。
LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;
以标准 ISO 8601 格式生成文本。
String output = ld.toString() ;
要生成其他格式的文本,请参阅 DateTimeFormatter
class。
作为标题,我需要获取从 HTML 页面发送到 Servlet 的日期输入。在此 servlet 中,我需要将此数据格式转换为 MySQL 格式。 事实上,我认为我已经做对了所有事情,但是,如果我引入 1970 年 1 月 1 日之前的日期,我就会遇到问题。
这是我从 HTML 页面解析日期时的代码:
Date authorDateOfBirth1= null;
try {
authorDateOfBirth1= new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("authorDateOfBirth1"));
}
catch (ParseException exceptionInParsingDate) {
out.print("Error in parsing date author1 " + exceptionInParsingDate.getMessage());
}
然后,每次我需要 object Mysql 我使用的日期:
statementAuthor.setDate(3, new java.sql.Date(authorDateOfBirth.getTime()));
非常感谢!
您在数据库中的列应为 DATE
.
小心你的import
陈述。您可能混淆了 Java 类型、java.sql.Date
和 java.util.Date
。一个代表一个时刻,另一个代表一个日期,但实际上是一个时刻。 两者都不使用 class。
您在 Java 中使用了可怕的日期时间 classes,几年前被现代 java.time class随着 JSR 310 的采用。
您的 Author
class 的出生日期成员字段应为 LocalDate
类型。
对于没有时间和时区的仅日期值,使用 LocalDate
。
LocalDate ld = LocalDate.parse( "1960-01-23" ) ;
使用 JDBC 4.2 及更高版本与数据库交换 java.time 对象。
myPreparedStatement.setObject( … , ld ) ;
从数据库中检索。
LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;
以标准 ISO 8601 格式生成文本。
String output = ld.toString() ;
要生成其他格式的文本,请参阅 DateTimeFormatter
class。