【问题标题】:Exception when trying to convert a String to a java.sql.Date尝试将字符串转换为 java.sql.Date 时出现异常
【发布时间】:2021-10-06 05:56:20
【问题描述】:

我有一个日期写为字符串的 JLabel,我想将其转换为 sql.Date,但是当我尝试转换它时,它运行异常。日期值是从带有 RMI 的服务器传递的。

有人知道可能是什么问题吗?

这是 RMI 代码:

PrenotazioniVaccini infoPrenotazione = null;    
    try {
        infoPrenotazione = stub.getPrenotazioneVaccinazione(tf_Cf.getText());
    } catch (RemoteException ex) {
        ex.printStackTrace();
    }
    
    label_DataVaccino.setText(infoPrenotazione.getData());

这是标签代码:

label_DataVaccino = new JLabel("");
label_DataVaccino.setBounds(0, 320, 400, 25);
label_DataVaccino.setHorizontalAlignment(JLabel.CENTER);
label_DataVaccino.setVerticalAlignment(JLabel.CENTER);
panel_AddVaccinatoGUI.add(label_DataVaccino);

这是异常运行的地方:

private void registraVaccinato() {
   String data = label_DataVaccino.getText();
   Date dataVaccino = Date.valueOf(data);
   System.out.println(dataVaccino);
}

这是错误:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException
    at java.sql/java.sql.Date.valueOf(Date.java:141)
    at centrivaccinali.AddVaccinatoGUI.registraVaccinato(AddVaccinatoGUI.java:294)
    at centrivaccinali.AddVaccinatoGUI$3.actionPerformed(AddVaccinatoGUI.java:282)
    at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
    ...

我已使用本指南将字符串转换为 sql.Date:https://www.javatpoint.com/java-sql-date

【问题讨论】:

  • 为什么,具体来说,您要使用java.sql.Date 而不是现代类型,尤其是java.time.LocalDate
  • @chrylis-cautiouslyoptimistic- 因为我从使用 jDatePicker.jar 创建的日历中获取字符串类型,我需要将选择的日期注册到数据库中

标签: java sql postgresql exception


【解决方案1】:

IllegalArgumentException 是当参数非法或不正确时。

数据字符串的语法需要采用这种格式:yyyy-mm-dd。还有其他限制,例如 mm 12。

【讨论】:

  • 我真是个白痴,我以 yyyy/mm/dd 格式写了日期,但它不起作用然后看你的回答我注意到你写的日期在格式 yyyy-mm-dd。
  • @Nico 仅供参考,YYYY-MM-DD 格式符合ISO 8601 标准。在序列化文本日期时间值时坚持这些标准格式,这是标准的目的。 java.time 类在解析/生成字符串时默认使用这些标准格式。
猜你喜欢
  • 2017-10-02
  • 2014-05-27
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 2020-09-08
  • 2014-04-16
  • 2020-06-08
  • 1970-01-01
相关资源
最近更新 更多