java.text.parseException: 无法解析的日期 1994-09-09

java.text.parseException: unparseable date 1994-09-09

我正在尝试将日期值从我的 java 程序发送到 oracle sql 数据库中。但我不断收到错误消息:java.text.parseexception: unparseable date.

我将日期格式设置为:

SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd", Locale.ENGLISH);
        java.sql.Date date = (java.sql.Date)df.parse(dob_text.getText());

我已将我的数据库设置为相同的日期格式。 并尝试通过准备好的语句发送日期,如下所示:

ps.setDate(3, date); 

我输入的日期是 1994-09-09。那是我声明正确的日期格式吗?是不是我的java阵型密码有问题?有没有其他人有这个问题?任何帮助将不胜感激

将您的格式更改为 yyyy-MM-dd。

我刚写了这个程序,它运行良好。确保您现在没有收到其他错误。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Locale;

public class DateFormatDemo
{
    public static void main(String[] args) throws ParseException
    {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
        System.out.println(df.parse("1994-09-09"));
    }
}

这应该可行,我更正了 2 个错误:

  • 首先,格式应该是 yyyy-MM-dd 因为那是你输入的格式。

  • 那么,你不能隐含地将java.util.Date转换为java.sql.Date,你需要使用java.sql.Date构造函数和java.util.Date#getTime()See here


解决方案

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
java.sql.Date SQLDate = new java.sql.Date(df.parse(dob_text.getText()).getTime());

您的第一次尝试可能会抛出您提到的异常,因为 Josh 指出的格式错误。更正此问题后,会出现下一个问题: java.sql.Date 不是 java.util.Date。因此,您不能只对 df.parse 的结果进行类型转换,即 java.util.Date。 第三:如果您向 SimpleDateFormat 提供模式,则可以省略语言环境。 以下代码运行无误:

    String input = "1994-09-09";
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Date date = df.parse(input);
    System.out.println( date);
    java.sql.Date sqlDate = new java.sql.Date( date.getTime() );
    System.out.println( sqlDate);