【发布时间】:2020-03-04 16:29:53
【问题描述】:
在过去的一个小时里,我一直在寻找并尝试在网络(和 SO)上提供的解决方案,了解如何在 Java 中使用 Date 类型,但我似乎无法让它工作。我使用的是 NetBeans 11.2,但我不习惯了 Java,这让我很难受(不是双关语)。看来LocalDateTime、Date 和Time 已贬值,我应该使用java.time。
说实话,我不知道该怎么办了。我正在尝试使用输入值构建一个查询以保存在mySQL 数据库中。
日期来源来自<input type="date">
SignIn.java (servlet):
String birthDate = request.getParameter("data_birthdate");
UserDto userDto = null;
UserDao userDao = new UserDao();
try
{
// Tried this
userDto = userDao.CreateUser(LocalDateTime.parse(birthDate));
// Tried that
userDto = userDao.CreateUser(Date.parse(birthDate));
// Tried this
userDto = userDao.CreateUser(Time.parse(birthDate));
}
userDao.java(道):
public void CreateUser(Date dateBirth) throws SQLException {
try {
connect = db.getConnect();
ps = connect.prepareStatement(SQL_CreateUser);
ps.setDate(1, dateBirth);
ps.executeUpdate();
}
}
【问题讨论】:
-
PreparedStatement.setDate()期望java.sql.Date而不是java.util.Date。前者是后者的子类,所以传入java.util.Date是行不通的。 -
Re "LocalDateTime, Date and Time 好像贬值了...",
LocalDateTime没有被弃用,用起来也没什么问题,但是steer如果可能,请清除Date和Time。冒着让您进一步困惑的风险,SO 问题Should I use java.util.Date or switch to java.time.LocalDate 有一些很好的答案,提供了关于这个问题的很多细节。另见Migrating to the New Java 8 Date Time API。