java - 如何从 HTML 表单中获取“日期”字段并将其转换为 MySQL 日期
问题描述
作为标题,我需要获取从 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());
}
然后,每次我需要一个对象 Mysql Date 我使用:
statementAuthor.setDate(3, new java.sql.Date(authorDateOfBirth.getTime()));
非常感谢!
解决方案
您在数据库中的列应该是类型DATE
。
小心你的import
陈述。您可能混淆了 Java 类型,java.sql.Date
并且java.util.Date
. 一个代表片刻,而另一个代表仅日期,但实际上是下面的片刻。不使用任何类。
您在 Java 中使用糟糕的日期时间类,这些类在几年前被现代java.time类所取代,并采用了 JSR 310。
您的班级的出生日期成员字段Author
应该是类型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
课程。
推荐阅读
- react-proptypes - 在 React 中只指定这些道具类型?
- python - 无法解决 Python 3 中的运行时错误
- matlab - 在不使用 min/max 命令的情况下查找矩阵的坐标最小值和最大值
- reactjs - 如何使用 React Router v4 处理重定向到同一路由(使用查询参数)
- html - 为什么最后一段没有在下面的 HTML 代码中着色?
- node.js - Typescript:通过装饰器工厂上的 TypedPropertyDescriptor 限制装饰器
- python - __VIEWSTATE、__EVENTVALIDATION、__EVENTTARGET 和 scrapy & splash 的问题
- html - Cant 样式 ul 列表(bootstrap 4,wordpress 主题)
- cassandra - 多节点数据中心的重启顺序
- javascript - 如何在 JSON 变量永久 JavaScript 数组中进行更改(例如分配新的键和值)?