簡體   English   中英

如何解決此錯誤“字符串無法轉換為日期”?

[英]How to solve this error “String Cannot be converted to Date”?

您好我正在嘗試使用以下代碼將用戶的出生日期存儲在數據庫中:

 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編程的技能。

如果這返回一個Date

JDateChooser.getDate()

您需要的是Date ,然后不要將其轉換為String 只需將其保留為Date

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

請注意,您也可以刪除此行,因為您沒有使用它聲明的變量:

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

通常,您希望盡可能多地將數據類型保留為原始形式。 除非特別需要將某些內容表示為字符串(將其顯示給用戶,通過某種序列化的 API 發送等),否則只需按原樣使用數據,而不是將其轉換為其他內容。

使用JDateChooser.getDate()獲得日期后,您會立即將其轉換為字符串: sdf.format(JDateChooser.getDate());

您應該將JDateChooser.getDate()返回的日期存儲為實際的日期 object。

Date birthdate = JDateChooser.getDate();

然后你可以直接在你的其他 function 中使用它:

user.setBirthDate(birthdate);

如果您確實需要將日期作為字符串用於其他目的(可能顯示給用戶),您可以將格式化的字符串版本存儲在不同的變量中:

String birthdateString = sdf.format(birthdate);   

否則,如果您不需要字符串版本,則可以刪除創建sdf的行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM