[英]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.