Java 如何解决这个错误;字符串不能转换为日期“;?
您好,我正在尝试将用户的出生日期存储在数据库中,代码如下:Java 如何解决这个错误;字符串不能转换为日期“;?,java,date,Java,Date,您好,我正在尝试将用户的出生日期存储在数据库中,代码如下: private void btnActionPerformed(java.awt.event.ActionEvent evt) { String username = txtUserName.getText(); String password = txtPassword.getText(); String em
private void btnActionPerformed(java.awt.event.ActionEvent evt) {
String username = txtUserName.getText();
String password = txtPassword.getText();
String email = txtEmail.getText();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String birthdate = sdf.format(JDateChooser.getDate());
Users user = new Users();
user.setUserName(cin);
user.setPassWord(firstName);
user.setEmail(email);
user.setBirthDate(birthdate);
try {
int count = Users.getInstance().insert(user);
if(count == 1){
JOptionPane.showMessageDialog(null,"success");
reset();
}else{
JOptionPane.showMessageDialog(null,"Faild");
}
} catch (Exception ex) {
Logger.getLogger(AddNewPatient.class.getName()).log(Level.SEVERE, null, ex);
}
}
我在“user.setBirthDate(birthdate);”行中遇到一个错误,该错误表示字符串不能转换为日期
因为参数birthdate在封装中被指定为日期类型(setBirthDate)
有没有办法解决这个问题,我是java编程新手,我正在努力提高我的java技能。如果返回
日期
:
JDateChooser.getDate()
Date birthdate = JDateChooser.getDate();
// later...
user.setBirthDate(birthdate);
您需要的是一个日期
,然后不要将其转换为字符串
。只需将其保留为日期
:
JDateChooser.getDate()
Date birthdate = JDateChooser.getDate();
// later...
user.setBirthDate(birthdate);
请注意,您还可以删除这一行,因为您没有使用它声明的变量:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
通常,您希望尽可能经常地保持数据类型的原始形式。除非有特定的需要将某些内容表示为字符串(将其显示给用户,通过某种序列化API发送,等等),否则只需按原样使用数据,而不是将其转换为其他内容。使用
JDateChooser.getDate()获取日期后,您将立即将其转换为字符串:sdf.format(JDateChooser.getDate())代码>
您应该将从JDateChooser.getDate()返回的日期存储为实际日期对象
Date birthdate = JDateChooser.getDate();
然后您可以直接在其他功能中使用它:
user.setBirthDate(birthdate);
如果出于其他目的(可能向用户显示)确实需要将日期作为字符串,则可以将格式化的字符串版本存储在不同的变量中:
String birthdateString = sdf.format(birthdate);
否则,如果您不需要字符串版本,您可以删除创建sdf
的行。目前,您正在将日期
格式化为字符串,然后尝试将其作为日期
使用。。。您不能只使用JDateChooser.getDate()的结果而不将其格式化为文本吗?(请注意,我建议使用java.time.LocalDate
并完全避免java.util.Date
,但这是一个稍微不同的问题。)您好@David我在“java.util.Date birthdate=JDateChooser.getDate();”之前尝试过这个方法,我得到了一个错误:java.util.Date无法转换为java.sql.Date,如果我没有错的话,日期的格式应该存储为java.sql.date forma数据库?@Anass:类型很重要。该错误指的是两种不同的类型,称为Date
。JDateChooser.getDate()返回什么特定类型?user.setBirthDate()
?如果需要在这两种类型之间进行转换,.JDateChooser.getDate()从JDateChooser字段中重新运行日期格式“yyyy-MM-dd”,并且user.setBirthDate()需要相同的类型,它可用于JtxtFileds,但不能用于JDateChooserwork@Anass:清楚具体是很重要的。JDateChooser.getDate()
返回某种类型的Date
对象(没有“格式”),还是返回一个字符串,以特定格式表示日期
?代码/错误暗示了前者,但您的注释暗示了后者。另外,如果JDateChooser.getDate()
返回的类型与user.setBirthDate()
所期望的类型相同,则此答案中的代码将解决问题中的错误。你在之前的评论中提到的另一个错误是在其他地方。为了纠正它,你必须对这些事情非常具体。它返回一个以特定格式表示日期的字符串,用户必须通过JDatechooser或手动键入来选择其生日我已经更新了顶部的代码,并包含了所有的文件,您可以查看一下吗?我尝试了这个,我在Preparedstatement“ps.setDate(7,u.getBirthDate());”中遇到了相同的错误