如何解决这个错误“字符串不能转换为日期”?

ac1kyiln  于 2021-06-26  发布在  Java
关注(0)|答案(2)|浏览(303)

您好,我正在尝试将用户的出生日期存储在数据库中,代码如下:

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在封装中被指定为date类型(setbirthdate),所以有什么方法可以解决这个问题,我是java编程新手,我正在努力提高我的java技能。

k4ymrczo

k4ymrczo1#

在你和她约会之后 JDateChooser.getDate() ,则立即将其转换为字符串: sdf.format(JDateChooser.getDate()); 您应该存储从中返回的日期 JDateChooser.getDate() 作为实际日期对象。

Date birthdate = JDateChooser.getDate();

然后您可以直接在其他函数中使用它:

user.setBirthDate(birthdate);

如果您确实需要将日期作为字符串用于其他用途(可能向用户显示),则可以将格式化的字符串版本存储在不同的变量中:

String birthdateString = sdf.format(birthdate);

否则,如果不需要字符串版本,可以删除创建的行 sdf .

00jrzges

00jrzges2#

如果返回 Date :

JDateChooser.getDate()

你需要的是 Date ,则不要将其转换为 String . 把它当作一个 Date :

Date birthdate = JDateChooser.getDate();
// later...
user.setBirthDate(birthdate);

请注意,您还可以删除这一行,因为您没有使用它声明的变量:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

一般来说,您希望尽可能多地保持数据类型的原始形式。除非有特定的需要将某个数据表示为字符串(将其显示给用户、通过某种序列化api发送它等等),否则只需按原样使用数据,而不是将其转换为其他数据。

相关问题