【问题标题】:Unparseable date: "yyyy-MM-dd"无法解析的日期:“yyyy-MM-dd”
【发布时间】:2016-04-04 15:48:21
【问题描述】:

我正在尝试将我用 jDateChooser 选择的日期发送到 MySQL 数据库,但它给了我以下错误:

Dec 30, 2015 5:23:29 PM werkstukcp3.swing.WerkstukGUI btnPatCreateActionPerformed
SEVERE: null
    java.text.ParseException: Unparseable date: "yyyy-MM-dd"

我一直在 StackOverflow 上四处寻找以解决此问题,但我尝试的一切都给了我另一个错误。

我的按钮有以下代码:

private void btnPatCreateActionPerformed(java.awt.event.ActionEvent evt) {                                             
    // TODO add your handling code here:
    int patientId = 12;
    String voornaam = txtPatVoornaam.getText();
    String achternaam = txtPatAchternaam.getText();
    int kamer = Integer.parseInt(txtPatKamer.getText());
    String departement = txtPatDep.getText();
    String campus = txtPatCampus.getText();

    DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
    sdf.setTimeZone(TimeZone.getTimeZone("GMT+1"));

    Date parse1 = null;
    try {
        parse1 = sdf.parse(datePatAankomst.getDateFormatString());
    } catch (ParseException ex) {
        Logger.getLogger(WerkstukGUI.class.getName()).log(Level.SEVERE, null, ex);
    }
    java.sql.Date aankomstdatum = new java.sql.Date(parse1.getTime());

    Date parse2 = null;
    try {
        parse2 = sdf.parse(datePatVertrek.getDateFormatString());
    } catch (ParseException ex) {
        Logger.getLogger(WerkstukGUI.class.getName()).log(Level.SEVERE, null, ex);
    }
    java.sql.Date vertrekdatum = new java.sql.Date(parse2.getTime());

    Patient nieuwePatient = new Patient(patientId, voornaam, achternaam, kamer, departement, campus, aankomstdatum, vertrekdatum);
    PatientDAO.voegPatientToe(nieuwePatient);
}

提前致谢!

【问题讨论】:

  • 打印出datePatAankomst.getDateFormatString()datePatVertrek.getDateFormatString(),好像其中一个是null
  • 似乎您正在解析日期格式而不是实际的日期字符串本身......
  • Per Reimeus 以上,sdf.parse(datePatAankomst.getDateFormatString()); 为什么要解析 dateFormatString 而不是日期字符串?
  • @SiemenGijbels 请在发帖前搜索 StackOverflow。您会发现数百个可与您的代码进行比较的工作代码示例。在比较中,您会发现问题所在。此外,当您发布时,请将示例代码缩减到显示问题所需的绝对最小值。

标签: java mysql date


【解决方案1】:

正如 Reimus 指出的,我正在解析日期格式,而不是实际日期。

private void btnPatCreateActionPerformed(java.awt.event.ActionEvent evt) {                                             
    // TODO add your handling code here:
    int patientId = 12;
    String voornaam = txtPatVoornaam.getText();
    String achternaam = txtPatAchternaam.getText();
    int kamer = Integer.parseInt(txtPatKamer.getText());
    String departement = txtPatDep.getText();
    String campus = txtPatCampus.getText();
    Date aankomstdatum = datePatAankomst.getDate();
    Date vertrekdatum = datePatVertrek.getDate();

    Patient nieuwePatient = new Patient(patientId, voornaam, achternaam, kamer, departement, campus, aankomstdatum, vertrekdatum);
    PatientDAO.voegPatientToe(nieuwePatient);
}

目前正在运行。非常感谢!

【讨论】:

    【解决方案2】:

    datePatAankomst.getDateFormatString() 的打印值。datePatAankomst.getDateFormatString() 的格式应与为 sdf 定义的格式匹配。

    【讨论】:

      【解决方案3】:

      这不是对您问题的真正答案,而是从字面上理解您的第一句话,仅供参考……

      不要费心解析

      实际上,您无需解析yyyy-MM-dd 字符串即可发送到数据库。

      您应该通过java.sql.Date 类将该值传递给数据库。静态valueOf 方法默认采用该字符串格式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-06
        • 1970-01-01
        • 2017-12-12
        • 1970-01-01
        • 1970-01-01
        • 2016-01-02
        相关资源
        最近更新 更多