Я пытаюсь получить дату рождения из моей базы данных и отобразить ее на JFormattedTextField. Он должен отображаться в формате мм/дд/гггг, но хранится в формате гггг/дд/мм. Как бы я пошел по этому поводу? Дата рождения пациента сохраняется как java.sql.Date.
JLabel lbl3 = new JLabel("Date of Birth:");
lbl3.setBounds(17, 129, 90, 22);
lbl3.setForeground(Color.WHITE);
lbl3.setFont(new Font("Microsoft New Tai Lue", Font.PLAIN, 16));
JFormattedTextField formattedDob = new JFormattedTextField();
formattedDob.setEditable(false);
formattedDob.setText("//");
formattedDob.setBounds(201, 128, 183, 22);
contentPane.add(formattedDob);
JButton btnSearchPatient = new JButton("Search");
btnSearchPatient.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
PatientSQL searchPatient = new PatientSQL();
Patient staff = searchPatient.getBySSN(patient.getSsn());
txtAddress1.setText(staff.getAddress1());
txtAddress2.setText(staff.getAddress2());
txtCity.setText(staff.getCity());
}
});
Вот мой PatientSQL.java для справки (нерелевантный код, такой как пакеты и функции, был удален для удобства чтения):
public class PatientSQL {
private SessionFactory factory;
public PatientSQL() {
try {
factory = new Configuration().configure().buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Failed to create sessionFactory object." + ex);
throw new ExceptionInInitializerError(ex);
}
}
/* Method to CREATE a patient in the database */
public void add(String fname, String lname, String ssn, java.sql.Date dob, String phoneNo, String address1, String address2, String city, String zipcode, String allergy1, String allergy2, String allergy3, String photo) {
Patient patient = new Patient(fname, lname, ssn, dob, phoneNo, address1, address2, city, zipcode, allergy1, allergy2, allergy3, photo);
add(patient);
}
public Patient getBySSN(String ssn) {
Session session = factory.openSession();
Patient patient = null;
try {
patient = (Patient) session.get(Patient.class, ssn);
} catch (HibernateException e) {
System.err.println("Can not find patient ssn: " + ssn);
} finally {
session.close();
}
return patient;
}
}
Возможно, вам следует попытаться преобразовать Date: используйте LocalDateTime # parse() (или ZonedDateTime # parse(), если в строке содержится часть часового пояса), чтобы проанализировать строку в определенном шаблоне в LocalDateTime. лайк:
String date_s = "2011/01/18";
SimpleDateFormat dt = new SimpleDateFormat("yyyy/dd/mm");
Date date = dt.parse(date_s);
SimpleDateFormat dt1 = new SimpleDateFormat("mm/dd/yyyy");
System.out.println(dt1.format(date));
Глупые требования требуют глупых ответов:
CREATE TABLE patient (
...
dob_string VARCHAR(8),
dob_date AS (STR_TO_DATE(dob_string,"%Y/%d/%m"))
)
Так что dob_string
в dob_string
и dob_date
из dob_date
а затем dob_date
формат по мере необходимости.
Если можно использовать SimpleDateFormat
SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
df.format(patient.getDob()); //I'm guessing what the get method is named but you get what I mean
YYYMMDD
), и у вас будет собственный тип для вывода формата, как требуется.