如何将在运行时获得的日期从字符串格式的用户转换为日期格式,以将其提供给数据库

时间:2015-10-19 12:24:09

标签: java datetime jdbc

public Date getTransactionDate()
    {
        System.out.println("Enter the transaction Date");
        String date = sc.next();
        DateFormat df = DateFormat.getDateInstance();
       String s1 = df.format(date);
       Date d1 = null;
       try
       {
           d1 = (Date) df.parse(s1);
       } catch (java.text.ParseException e)
       {
        // TODO Auto-generated catch block
        System.out.println(e.getMessage());
       }
          return d1;
   }

Date d2 = new PreparedStmnt().getTransactionDate();

public static void addTransaction(Connection connection, PreparedStatement preparedStatement , long transac_Id , Date transac_date) 
    throws SQLException
{
    String sqlQuery = "INSERT INTO TRANSACTIONS VALUES (?,?)";
    preparedStatement = connection.prepareStatement(sqlQuery);
    preparedStatement.setLong(1, transac_Id);
    preparedStatement.setDate(2, transac_date);
    preparedStatement.executeUpdate();
}

它是一个简单的事务条目,我希望用户在运行时提供日期,然后将其存储在数据库中。但这样做,我得到一个错误说:

线程“main”中的异常java.lang.IllegalArgumentException:无法将给定的Object格式化为日期         at java.text.DateFormat.format(Unknown Source)         at java.text.Format.format(Unknown Source)         at bluePrint.PreparedStmnt.getTransactionDate(PreparedStmnt.java:76)         在bluePrint.PreparedStmnt.main(PreparedStmnt.java:30)

这是我的第一个项目。所以,请帮帮我。

1 个答案:

答案 0 :(得分:1)

你应该使用sc.nextLine()而不是sc.next(),因为它不考虑空间 你可以试试

System.out.println("Enter the transaction Date");
        String string = "January 2, 2010";
        Scanner sc = new Scanner(System.in);
        string = sc.nextLine();
        System.out.println(string);
        DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
        try {
            Date date = format.parse(string);

            System.out.println(date);
        } catch (java.text.ParseException e) {
            // TODO Auto-generated catch block
            System.out.println(e.getMessage());
        }
这对我有用。输入日期格式2010年1月2日